Hola estoy creando un juego de peleas ya tengo montado la mayoria de cosas, pero el juego comienza muy pronto y sigue al siguiente round muy rapido tambien.
lo que necesito es que cuando se crea el objeto round1 se pause el juego por unos segundos: ya saben round1 -fight como en cualquier juego de peleas al iniciar el round y se oiga round1 y no se puedan utilizar el player 1 hasta que pasen unos segundos
(http://img10.imageshack.us/img10/6197/hf6.gif)
tambien cuando gane player1 o player2 no siga inmediatamente al siguiente round o enemigo sino que haya una pequeña pausa y salga la leyenda tu ganas o tu pierdes.
Alguien tiene un codigo que me pueda facilitar gracias
(http://img543.imageshack.us/img543/1222/nhmp.jpg)
aqui pueden ver como se crea el objeto round y los personajes ya se mueven a su antojo.
Si utilizas la función sleep() logras que el juego se "freeze" pero no podrías mostrar nada ya que el mismo estaría en estado de "freeze", lo que te recomiendo es "encerrar" en una simple variable el método que usas para que el personaje se mueva... Con esto me refiero por ejemplo, en el evento create del personajes creas una simple variable llamada:
pControl = false;
Ahora encierras el codigo con el cual mueves a tu personaje con un simple IF:
if(pControl)
{
//Aca el codigo con el cual se mueve tu personaje.
}
Con esto estamos diciendo que si la variable pControl es verdadera, entonces podriamos movernos, ahora al iniciar el juego, no podras moverte, ya que en el evento create la establecimos como FALSE... lo unico que ahora te queda es hacer que cuando el objeto que aparece ROUND 1 desaparezca, pongas a pControl en TRUE y listo..
Saludos!
PD: Para el tiempo de espera y demás, tenes que usar alarms.
Parecido a como dice Kamikaze, pero con una alarma de unos tres o cuatro segundos, mientas no llegue a cero, pControl = false, cuando llega a cero, pControl = true. Obvio que tienes que ajustar tu código para que esté alerta del comportamiento de la alarma
Hola gracias por responder Kamikaze y Penumbra el metodo me funciona, pero luego no se como poner Pcontrol = true, bueno trato con la forma de kamikase no me funciona y con el metodo de penumbra tampoco me funciona, pongo algo asi
//in create
timer =90;
//in step
if (timer = 0) {
pControl = true;
timer = 90;
} else {
timer -= 1;}
gracias de antemano
Prueba agregando un evento de alarma (es otro evento, junto a STEP, DRAW, etc)
Dentro de la alarma 0, agregas pControl = 1
En STEP, cuando el round se termine, debes hacer que
{pControl = 0; alarm[0] = 180}
Se mostraría el mensaje del round, la alarma comenzaría a correr, pControl= 0, y cuando la alarma llegue a cero, pControl = 1 y se vuelve a permitir mover al personaje o comenzar la pelea.
hola perdona que moleste tanto
este es el script que uso para movimiento ya esta modificado como dijo Kamikaze
var right, up, left, down, spdinc, maxhspd;
right = argument0;
up = argument1;
left = argument2;
spdinc = 4;
maxhspd = 8;
jump = 4
pControl = 0; 8)
if sprite_index == win{exit}
if abs(hspeed) > 0 and !action{walking = true}
else {walking = false}
if action{hspeed = 0}
{if hspeed < -maxhspd{hspeed = -maxhspd}
if hspeed >= maxhspd{hspeed = maxhspd}}//limit max speed
if dead{exit}
if(pControl) 8)
{
if abs(hspeed) < maxhspd// if going slower than max speed
{if keyboard_check(left)
{motion_add(180, spdinc)}
if keyboard_check(right)
{motion_add(0, spdinc)}
}
if abs(hspeed) >= maxhspd// if going faster than max speed
{if hspeed > 0{//if going right
if keyboard_check(left)
{motion_add(180, spdinc)}}
if hspeed < 0{//if going left
if keyboard_check(right)
{motion_add(0, spdinc)}}
}
if onground
{if keyboard_check_pressed(up)
{motion_add(90, 10)
create_sfx(x, y, spr_jump)
}
}}
hasta aqui todo bien...
en objeto Round
tengo esto
//create
timer = 60
//Alarm 0
pControl = 1
//step
if (timer <= 0) {
instance_destroy();
timer = 60;
} else {
timer -= 1;
}
{pControl = 0; alarm[0] = 180}
de seguro puse algo mal pero llevo un dia en esto y no hallo la respuesta
pControl debe ser una variable creada en CREATE del objeto jugador, me imagino que ahí es donde está. No sé cómo se llame tu objeto jugador, pero supongamos que se llama obj_Jugador. Al objeto Round le voy a llamar obj_Round
Cita de: yokaiworld en Enero 04, 2014, 06:50:34 AM
//step
if (timer <= 0) {
instance_destroy();
timer = 60;
} else {
timer -= 1;
}
Método 1//STEP de obj_Round lo modificaría así :
if (timer <= 0)
instance_destroy();
else
timer -= 1; //cuando sólo hay una instrucción después del IF o del ELSE no es necesario usar corchetes
//STEP del obj_Jugador:
if ( instance_exists(obj_Round) )
pControl = 0 // invalidar movimiento si existe el objeto Round
else
pControl = 1 // permitir movimiento si no existe objeto Round
Creo que así funcionaría. Pero si no...
Método 2 //CREATE de obj_Round:
timer = 60
alarm[0] = 61//Alarm 0 (en obj_Round)
obj_Jugador.pControl = 1
STEP de obj_Round:
if (timer <= 0)
instance_destroy();
else
{
timer -= 1;
obj_Jugador.pControl = 0;
}
gracias Penumbra y Kamikaze
//En el script de movimiento de object_player1:
pControl = instance_exists(ROUND);
if ( instance_exists(ROUND) )
pControl = 0 // invalidar movimiento si existe el objeto Round
else
pControl = 1 // permitir movimiento si no existe objeto Round
sin su ayuda jamas lo habria logrado gracias