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 !!
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."
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..
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
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.
¿Entonces la posible solucion es...?
En el create var ellegado=false
STEP
if ellegado = false
Alarm (0)=2*room speed
ellegado=true
Listo. Solo se repite una vez
Gracias !! ;)