Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Tomix999 en Noviembre 03, 2013, 10:11:23 PM

Título: Comprobar distancia de un objeto y moverse
Publicado por: Tomix999 en Noviembre 03, 2013, 10:11:23 PM
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.
Título: Re:Comprobar distancia de un objeto y moverse
Publicado por: Haseo en Noviembre 04, 2013, 01:21:02 AM
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

Título: Re:Comprobar distancia de un objeto y moverse
Publicado por: Iros en Noviembre 04, 2013, 01:32:52 AM
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.