Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: TheZanaoria en Noviembre 05, 2015, 06:49:08 PM

Título: Comprimir jugador entre dos bloques
Publicado por: TheZanaoria en Noviembre 05, 2015, 06:49:08 PM
¿Como hago para que cuando el jugador este comprimido entre dos bloques muera?

Algo así:   

Platform >>> Player|Block| La plataforma se mueve.

Platform|Player|Block| La plataforma comprime al jugador contra el bloque.

Platform||Block| El jugador se destruye porque no tiene espacio.
Título: Re:Comprimir jugador entre dos bloques
Publicado por: penumbra en Noviembre 05, 2015, 09:32:45 PM
Se puede hacer de distintas maneras. Una manera es preguntar si la distancia entre el bloque y la plataforma es menor o igual all ancho del sprite del jugador, si es cierto, quiere decir que ambas estructuras están tan cerca que pueden aplastar/comprimir al jugador. Luego, se pregunta si el jugador está en medio de las dos.
[gml]
if abs(obj_plataform.x - obj_block.x) <= 32   //Estoy suponiendo que el ancho del sprite del jugador es aprox. 32 pixeles
{
     if (obj_player.x > obj_bloque.x) and (obj_player.x < obj_plataforma)
          muerte = true        //El jugador muere. Aplastamiento: bloque - jugador - plataforma
     else if (obj_player.x > obj_plataforma.x) and (obj_player.x < obj_bloque)
          muerte = true         //El jugador muere. Aplastamiento: plataforma - jugador - bloque
}
[/gml]
Esto es una idea básica. Esto sólo funciona si idealmente hay una sola plataforma y un solo bloque. Obviamente la idea se puede extender para más plataformas y más bloques, pero entonces se tendría que crear un método para identificar qué plataforma y qué bloques se van a usar en las comparaciones de los ifs anteriores (mediante identificadores de instancia)
Título: Re:Comprimir jugador entre dos bloques
Publicado por: TheZanaoria en Noviembre 11, 2015, 06:32:02 PM
Ok, gracias por responder, me ayudaste bastante :D