Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: francordoba en Agosto 20, 2013, 11:21:49 PM

Título: Calcular número de objetos del mismo tipo en una determinada distancia
Publicado por: francordoba en Agosto 20, 2013, 11:21:49 PM
Hola a todos.

Quisiera calcular el número de objetos de un mismo tipo que estan a una determinada distancia.

Ejemplo:

Un granjero tiene en su granja de 1000 pixeles por 1000 pixeles, caballos, cerdos, ovejas, etc...

Cómo podría sacar el número de cerdos que hay a solamente 300 pixeles de distancia del granjero, ignorando a los otros cerdos que estan más lejos, y a todo lo demás

Probando con instance_nearest, solo me chequea uno, el más cercano, pero necesito saber si por ejemplo, tengo 6 cerdos desde mi granjero a 300 pixeles o menos de distancia.

Por cierto, ¿cómo haría si en vez del granjero, fuera otro cerdo más, para que no se contara así mismo y sí a los demás?
Espero que se entienda bien.
Título: Re:Calcular número de objetos del mismo tipo en una determinada distancia
Publicado por: brunoxzx en Agosto 21, 2013, 12:22:04 AM
Este primer script se cuenta  a si mismo si eres un cerdo.
[gml]
//Ejemplo instance_count_distance( obj_cerdo );
var count;
count=0;
with(argument0){
      if ( distance_to_object( other ) ) count+=1;
}
return(count);
[/gml]
En est'e no se cuenta a s'i mismo pero puede ser un poquit'in m'as lento.
[gml]
var count;
count=0;
with(argument0){
      if ( other.id!=id && distance_to_object( other ) )  count+=1;
}
return(count);
[/gml]
Título: Re:Calcular número de objetos del mismo tipo en una determinada distancia
Publicado por: francordoba en Agosto 21, 2013, 12:32:26 AM
Me da error en los dos.  ¿Podrías mandarme un ejemplo?


Gracias de antemano.
Título: Re:Calcular número de objetos del mismo tipo en una determinada distancia
Publicado por: brunoxzx en Agosto 21, 2013, 04:14:15 AM
Bah, ni siquiera escribí la distancia que quieres revisar. Perdón.
[gml]
//Ejemplo instance_count_distance( obj_cerdo, 300 );
var count;
count=0;
with(argument0){
      if ( distance_to_object( other ) ) < argument1 count+=1;
}
return(count);
[/gml]

El segundo te lo dejo a tí, si algo anda mal avisas xP.