Hola, Espero que puedan ayudarme Por Favor, bueno estoy haciendo un juego de plataformas con trampas, bastante basico con los diseños...
Bueno, tengo un objeto que es una pared con espinas y segun la distancia que hay entre el objeto y el jugador, este objeto se caera para poder matar al jugador.
El codigo es el siguiente: Lo que quize hacer es que compruebe, si es que el jugador esta arriba del objeto, este no caera. Solo si esta abajo de el.
if not distance_to_point(x,obj_player.y) >=1
{if distance_to_point(obj_player.x,0) <=64
{ if distance_to_point(x,obj_player.y) <= 300
{down = 1;
}
}
}
Pero el problema esta, que cuando bajo a otro piso por asi decir, y hay un objeto de estos, ya no cae.
Una imagen de ejemplo:
(http://i.imgur.com/1DlEwN4.png)
¿Por que pasa esto? Quizas sea algo sencillo de hacer, pero soy nuevo en GM y necesito ayuda por favor!
Muchas gracias por leer!
Un saludo.
Estabas cerca :); esto te ayudara:
// Esto va en el objeto que cae
if y<obj_player.y
{
if distance_to_point(obj_player.x,y)<=1
{down = 1;}
}
if down==1 y+=4; // velocidad de caida del objeto
si no lo entiendes va un archivo adjunto de ejemplo para que lo observes
Lo que puedo ver es que haces muchas comprobaciones, y en una de ellas tenes el valor de Y en 0, es decir que va a comprobar si la distancia de la posición X del personaje y la posición Y = 0 es menor o igual que 64, la verdad a eso no le encuentro mucho sentido.
Tratá de usar un solo distance_to_point con algo similar a esto:
[gml]
if (distance_to_point(obj_player.x,y) <= 160 && distance_to_point(obj_player.x,y) > 32 ) {
down = 1;
}
[/gml]
Los valores los usé teniendo en cuenta la cantidad de cuadros que hay en la captura que pusiste, es decir, si miden 32, 5 cuadros serían 160. Lo que hice fue comprobar la distancia X del personaje pero manteniendo la distancia Y del objeto a caer, es decir, si la distancia es menor o igual que 160 pero mayor que 32 (para que no caigan cuando estés en el piso de arriba) se active down.