Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: djboro88 en Septiembre 09, 2015, 12:15:24 PM

Título: [SOLUCIONADO] Problema con colision y alarma
Publicado por: djboro88 en Septiembre 09, 2015, 12:15:24 PM
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?

Título: Re:Problema con colision y alarma
Publicado por: 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.
Título: Re:Problema con colision y alarma
Publicado por: kostra en Septiembre 09, 2015, 02:12:04 PM
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
Título: Re:Problema con colision y alarma
Publicado por: venus en Septiembre 09, 2015, 02:32:58 PM
¿Porque dead = 1;? ¿No se vuelve a crear el objeto al ejecutar room_restart()?
Título: Re:Problema con colision y alarma
Publicado por: kostra en Septiembre 09, 2015, 02:36:56 PM
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
Título: Re:Problema con colision y alarma
Publicado por: venus en Septiembre 09, 2015, 03:00:11 PM
Si, al reestablecerse la alarma nunca se ejecutaría.
Creo que con for podría evitar usar el evento create.
Título: Re:Problema con colision y alarma
Publicado por: kostra en Septiembre 09, 2015, 03:02:33 PM
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
Título: Re:Problema con colision y alarma
Publicado por: djboro88 en Septiembre 09, 2015, 03:23:00 PM
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?
Título: Re:Problema con colision y alarma
Publicado por: venus en Septiembre 09, 2015, 03:52:22 PM
Colisión:

alarm[0] = room_speed*3;
instance_destroy();


Alarm0:
room_restart();





Como destruyes la instancia la alarma solo se ejecuta una vez.
Título: Re:Problema con colision y alarma
Publicado por: kostra en Septiembre 09, 2015, 04:14:22 PM
si se destruye ya no hace falta ninguna variable xD, lo que dice venus, FIN xD
Título: Re:Problema con colision y alarma
Publicado por: djboro88 en Septiembre 14, 2015, 11:25:35 AM
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?
Título: Re:Problema con colision y alarma
Publicado por: Guacusio en Septiembre 14, 2015, 01:54:42 PM
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.
Título: Re:Problema con colision y alarma
Publicado por: djboro88 en Septiembre 14, 2015, 05:59:58 PM
Cierto !!
Que despiste mas tonto. GRACIAS  ;D