Mientras estudio el obj_Aplastador de mi post anterior para crear mecánicas nuevas, dejare pendiente este problema para progresar en un nuevo elemento.
(https://i.gyazo.com/5262c09a6c87a64067c95d6240731fb1.gif)
Como se puede apreciar en el GIF de este juego "Super Mario Galaxy 2", hay unas baldosas (suelo/bloques) que al pisarlas o mas bien tocarlas, cambian de color, y si el jugador las toca nuevamente, recuperan su estado original, básicamente el jugador debe pasar por el mismo sitio una única vez ¿que planeo hacer con esto? pues un puzzle de colisiones como dice el titulo, esto es lo que se me ocurrió implementar.
La idea es crear 2 objetos nuevos.
El obj_Bloque_Alarma: Este objeto dispone de un spr_Bloque_Alarma, el cual tiene 3 fotogramas para el cambio de estado que en este caso es de azul (inactivo) a amarillo (activo), y si se pudiera armar un GIF mas largo el verde (completado), claro que esos colores los cambiare, pero es un ejemplo.
El obj_Puerta_Alarma: Este objeto simplemente es una puerta que se debe destruir cuando todos los obj_Bloque_Alarma estén en el estado (completado).
El obj_Jugador: Simplemente debe colisionar.
Esto es lo que he considerado en código.
obj_Bloque_Alarma
///CREATE
///Estados
image_speed = 0 //Evitar que los fotogramas cambien por step
estado = inactivo //Estado inicial/normal
estado = activo //Estado después de la colisión
estado = completado //Estado permanente
///COLLISION obj_Jugador (Bueno aquí esta con palabras)
Si el jugador colisiona con el obj_Bloque_Alarma (inactivo)
Su estado es (activo)
Si el jugador colisiona con el obj_Bloque_Alarma (activo)
Su estado es (inactivo)
Un problema que hay en esto es que el bloque va a parpadear de forma infinita por tener al jugador encima, en vez de contar el 1° impacto como colisión.
///STEP
Si todos los obj_Bloques están en estado (activo)
Todos se volverán en estado (completado)
///ALARMA
Algo tendrá que hacer aquí?
obj_Puerta_Alarma
///STEP
Si todos los obj_Bloques_Alarma se encuentran en estado (completado)
instance_destroy()
Creo que he considerado todos o al menos la gran mayoría de los elementos que son necesarios para crear las baldosas que aparecen en "Super Mario Galaxy 2", al menos la mecánica de colisiones.
Bien creo que me iré a dormir por que "el que madruga ¡SE MUERE DE SUEÑO! XD.
Te dejo un ejemplo adjunto.
Cita de: NiuWeb en Septiembre 15, 2017, 04:57:34 PM
Te dejo un ejemplo adjunto.
Vaya esto de programar se te da bien, despues de ordenarlo a mi gusto, logre implementar mi puerta.
(https://i.gyazo.com/8144b1169a69f6950a78e1b236edde57.gif)
Imaginate si creo con esta misma mecánica a otro objeto que se habra con sus propios bloques, les colocaria simbolos en el centro y el jugador tendra que activar los del mismo tipo para abrir una puerta "X" en base a sus bloques "X", pero de eso me encargo yo, debo admitir que solucionaste mi problema al 1° intento.
Nota: Agradecido, ademas te puedo mandar los códigos si quieres, pero dudo que me pidas algo tan básico que armo en un rato ;D.