Hola GAMEMAKEROS !!
Parecerá una tonteria hacer esta pregunta, despues de tantas cuestion y algunas enrevesadas...
Pero me está dando un quebradero de cabeza el solucionar este dilema.
Quiero que cuando el player colisione con la pared, ejecute una alarma. Pasados 3 segundo se reinicia el nivel.
No se que hago mal
obj_player
COLLISION obj_pared
alarm[0] = room_speed * 3;
ALARM[0]
room_restart();
Pues no funciona...
¿Alguien me podria decir porqué?
¿Y alguna solución alternativa?
Yo lo he probado y funciona.
El problema esta en que si sigue chocando la pared, la variable alarm seguirá a 3 segundos y nunca se activara el evento.
Haz que la pared sea solida y que si alarm[0] es mayor que -1 (alarma desactivada) no se pueda mover.
create:
dead = 0;
colision:
if dead == 0
{
dead = 1;
alarm[0] = room_speed*3;
}
alarm0:
room_restart();
asi lo hago yo. El problema es justo el que dice Marth
¿Porque dead = 1;? ¿No se vuelve a crear el objeto al ejecutar room_restart()?
dead = 1 para que no este a 0, la alarma no se este poniendo en room_speed*3 constantemente en un bucle y al reiniciarse la room, vuelve a ponerse a 0, ya que en create asi lo manda
Si, al reestablecerse la alarma nunca se ejecutaría.
Creo que con for podría evitar usar el evento create.
pero se reestablece cuando se reinicia la room solamente, que es justo lo que quiere, si no se reestableciera, solo podria "morir" una sola vez xD
la variable dead que use solo sirve para darle la orden ala alarm NA SOLA VEZ y no cree un bucle... eso que dices de un for... no le veo mucho sentido
Cita de: Marth en Septiembre 09, 2015, 12:35:06 PM
Yo lo he probado y funciona.
El problema esta en que si sigue chocando la pared, la variable alarm seguirá a 3 segundos y nunca se activara el evento.
Haz que la pared sea solida y que si alarm[0] es mayor que -1 (alarma desactivada) no se pueda mover.
En mi caso, cuando choca.
Destruyo la instancia.
¿Entonces cual es una buena solución?
Colisión:
alarm[0] = room_speed*3;
instance_destroy();
Alarm0:
room_restart();
Como destruyes la instancia la alarma solo se ejecuta una vez.
si se destruye ya no hace falta ninguna variable xD, lo que dice venus, FIN xD
Pues por algun motivo, no funciona.
Os dejo la captura para que veais.
(http://www.subeimagenes.com/img/captura-1440970.JPG)
ALARM[0]
room_restart();
¿Porque no funciona?
Estás activando la alarma de un objeto que al mismo tiempo estás destruyendo, lo cual no tiene sentido. Tienes que poner la alarma en otro objeto que no sea destruido al morir el jugador. Por cierto, no hace falta usar with para que una instancia ejecute instrucciones sobre sí misma:
Evento colisión de obj_RedPlayer con obj_pincho:
obj_controlador.alarm[0]=room_speed*3;
instance_destroy();
Evento alarm[0] de obj_controlador:
room_restart();
obj_controlador es un objeto controlador en el juego que no es destruido durante el juego.
Cierto !!
Que despiste mas tonto. GRACIAS ;D