Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: djboro88 en Mayo 21, 2015, 11:10:20 AM

Título: [SOLUCIONADO] Espera al llegar a meta
Publicado por: djboro88 en Mayo 21, 2015, 11:10:20 AM
Hola a todos GameMakeros !!
Estoy peleando con las Alarmas, pero no consigo el resultado.

Quiero que cuando el jugador (obj_player), llegue a la meta (obj_meta), se quede pausado 2 segundos antes de pasar al siguiente nivel.
¿Cómo se consigue tal cosa?

Gracias !!
Título: Re:Espera al llegar a meta
Publicado por: king195 en Mayo 21, 2015, 01:46:17 PM
Lo primero que deberías de hacer es entender el funcionamiento de un Alarm.

Si quieres llamar al Alarm necesitas poner algo como esto

Alarm[0] = room_speed * 2

Donde 2 son los segundos y room_speed es a la velocidad a la cual va la habitación/juego. Con esa simple linea llamas al Alarm. Pasaran los 2 segundos y el Alarm hara que una variable o algo se ponga a true, en cuanto eso se ponga a true pasara lo que tu hayas pedido.

Es decir para que un alarm funcione correctamente necesitas lo que te puse anteriormente más una variable que ayude, a modo de flag/bandera.

Evento Create
f_meta = false;

Evento Alarm[0]
f_meta = true;

Evento  Step
if(condicion){
  alarm[0] = room_speed * 2;
}

if(f_meta == true){
  //accion
}



Entendiendo este codigo es tan simple como

Step Event del Obj_player

if(place_meeting(x,y,obj_meta)){
  alarm[0] = room_speed * 2;
  hspeed = 0;
}

if(f_meta == true){
  f_meta = false;
  room_goto();
}


Algo así por el estilo, del palo si el personaje colisiona con el obj_meta se quedara 2 segundos y se ira a otra habitacion. Recuerda poner la velocidad del personaje a 0 y el resto de cosas a 0 o poner basicamente la pausa ahí dentro, podrias si quisieras desactivar todas las instancias y quedarte con una captura de pantalla del juego a modo de "pausa."
Título: Re:Espera al llegar a meta
Publicado por: vitito93 en Mayo 21, 2015, 09:28:19 PM
Resumiendo al de arriba..
En la colision del personaje con la meta, pones una alarma asi: alarm[0]=60 <--Steps ... 60 Steps = 2 segundos, obviamente dependiendo la velocidad que tenes puesta en la room en la seccion settings.. por default es 30. por eso 60 son 2 segundos.. cada segundo tiene 30 steps..
despues en la alarma 0 pones que vaya a la otra habitacion y listo..
Título: Re:Espera al llegar a meta
Publicado por: djboro88 en Mayo 25, 2015, 10:14:36 AM
Por algun motivo que desconozco, solo funciona si salgo de la meta.
Al entrar a la meta no hace nada, pero si salgo de la meta, funciona.

Adjunto el archivo para que lo podais ver y así ayudar mejor.

Gracias
Título: Re:Espera al llegar a meta
Publicado por: penumbra en Mayo 25, 2015, 08:04:52 PM
Sin ver el ejemplo, suena al típico error en el que incurrimos el 90% de los que comenzamos a usar las alarmas

Repito, sin ver el ejemplo, suena a que estás ajustando la alarma en STEP, cuando estás en la meta: "Si estoy en la meta, le doy un  valor a la alarma". Pasa que al siguiente STEP, sigues estando en la meta, por lo que otra vez, se le da un valor a la alarma, y así en todos los steps en que se esté en la meta, y esto hace que la alarma nunca se decremente y no pueda llegar a cero. Por eso, cuando sales de la meta, sí funciona, porque la condición ya no se cumple y la alarma ya puede llegar a 0.
Título: Re:Espera al llegar a meta
Publicado por: djboro88 en Mayo 25, 2015, 10:49:06 PM
¿Entonces la posible solucion es...?
Título: Re:Espera al llegar a meta
Publicado por: arcangelcaos en Mayo 26, 2015, 08:30:56 AM
En el create  var ellegado=false
STEP
if ellegado = false
Alarm (0)=2*room speed
ellegado=true

Listo. Solo se repite una vez
Título: Re:Espera al llegar a meta
Publicado por: djboro88 en Agosto 12, 2015, 08:42:59 AM
Gracias !!  ;)