Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zanza en Octubre 21, 2017, 08:09:41 PM

Título: Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: zanza en Octubre 21, 2017, 08:09:41 PM
Hola a todos, tengo una duda.. como dice el titulo quisiera saber como puedo calcular la distancia entre las instancias mas cercanas de un mismo objeto. les agradecería mucho que me guiaran estoy algo perdido con tantas funciones!
Título: Re:Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: bygdle en Octubre 21, 2017, 08:31:20 PM
[gml]
///Evento step del objeto
var near = instance_nearest(x, y, object_index);
var dist = distance_to_object(near); //Ésta es la distancia.
[/gml]
Título: Re:Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: zanza en Octubre 21, 2017, 08:52:21 PM
Okay amigo, no creía que seria tan simple, gracias por la ayuda :D, tengo otra duda amigo, dibuje en el evento draw la variable de dist (draw_text(x,y,string(dist))); y al ejecutarlo me da un resultado de 1,000,000
(https://i.hipertextual.com/2017/10/21/21.png)
(https://i.hipertextual.com/2017/10/21/22.png)
porque esto?? o sera que lo estoy malinterpretando.
Título: Re:Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: bygdle en Octubre 21, 2017, 09:03:47 PM
La variable dist es local al evento Step del objeto. Mueve el código que te dí al evento Draw, a ver si se arregla.
Título: Re:Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: zanza en Octubre 21, 2017, 09:17:14 PM
Nope se queda igual xDD
Título: Re:Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: bygdle en Octubre 21, 2017, 09:23:29 PM
Vale, lo que me temía. Entonces la razón es que el objeto se encuentra a sí mismo como instancia más cercana y calcula una distancia enorme. Ahora el código se complicará un poco:
[gml]
//Evento step... o Draw.
var ds = ds_priority_create();
with(object_index)
{
    if(id != other.id)
    {
        ds_priority_add(ds, id, distance_to_object(other));
    }
}
var near = ds_priority_find_min(ds);
var dist = 0;
if(instance_exists(near))
    dist = distance_to_object(near);
[/gml]
EDIT: Se me fue un símbolo de más xD, código corregido.
Título: Re:Calcular la distancia entre las instancias mas cercanas de un mismo objeto
Publicado por: zanza en Octubre 21, 2017, 09:35:20 PM
Ahora si funciona correctamente, Muchisimas gracias NiuWeb por la rapida y perfecta explicación entendí perfectamente :)
(https://i.hipertextual.com/2017/10/21/1.png)