Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Pablo en Agosto 02, 2011, 07:15:52 AM

Título: Detectar que objeto esta mas cerca
Publicado por: Pablo en Agosto 02, 2011, 07:15:52 AM
Hola gente!
Mi duda es la siguiente, tengo 3 objetos, uno de ellos es el protagonista del juego, y los otros dos son objetos cualquiera, la cuestion es que necesito chequear de alguna forma cual de los dos objetos esta mas cerca del personaje, para que este levante ese objeto! En fin, espero que puedan ayudarme! gracias :D
Título: Re: Detectar que objeto esta mas cerca
Publicado por: brunoxzx en Agosto 02, 2011, 08:15:30 AM
Intenta con instanace_nearest(x,y,obj) que devuelve la ID del objeto de tipo obj mas cercano al punto x e y, algo as? dice el manual.
Título: Re: Detectar que objeto esta mas cerca
Publicado por: MaanuRP en Agosto 02, 2011, 08:42:03 AM
Para que hablar, hice un ejemplo solo para ti ^^
Espero que te sirva, cualquier duda me la haces saber :)

Saludos!

(Esta aca abajo adjuntada)
Título: Re: Detectar que objeto esta mas cerca
Publicado por: Pablo en Agosto 02, 2011, 09:54:13 AM
Gracias a los dos!
El ejemplo esta perfecto, aun que tengo un problemita, en realidad usare mas de dos objetos, dije dos solo por poner un ejemplo xD a parte de que los dos objetos son del mismo tipo, osea el mismo objeto duplicado.. pero ya vere que hacer, gracias por la ayuda!! :)
Título: Re: Detectar que objeto esta mas cerca
Publicado por: MaanuRP en Agosto 02, 2011, 10:20:09 AM
Siguen siendo dos objetos distintos (o los que sean).
Haz lo siguiente:

Creas la cantidad de enemigos que quieras y lo unico que vas a tener que hacer es cambiar el numero, te explico como:

Create:

global.distancia_enemigo_[b]argument0[/b] = 0

//Donde "argument0" es el numero del enemigo.


Step:

global.distancia_enemigo_argument0 = distance_to_object(Jugador)

//Donde "argument0" es el numero del enemigo.


Pero el verdadero problema llegaria en el objeto "Controlador", ya que si quieres seguir usando mi metodo tendras que muchas sentencias if
Por ejemplo:

if global.distancia_enemigo_1 < global.distancia_enemigo_2 and global.distancia_enemigo_1 < global.distancia_enemigo_3
{
  draw_text(Jugador.x-22,Jugador.y-40,"1")
}

//Esto solo para especificar que si la distancia de Enemigo_1 es menor al a de Enemigo_2 y a la de Enemigo_3. Asi que cuantos mas pongas, mas dificil y largo se te hara.

//Si alguien tiene una solucion, conoce alguna sentencia que sea como un "Select Case" o algo por el estilo, ayudaria a solucionar el problema. Sino consigues alguna mas facil, te quedara tipear, copy, paste y un tiempito.


Saludos!
Título: Re: Detectar que objeto esta mas cerca
Publicado por: brunoxzx en Agosto 02, 2011, 10:20:46 AM
Bueno yo creo que seria una mejor soluci?n crear un objeto que sea pariente de los objetos que vas a chequear, despu?s chequear con instance_nearest() cual es el objeto pariente mas cercano.

[gml]instance_nearest(x,y,par_objetos)[/gml]

Si no entendiste dejo adjunto
Título: Re: Detectar que objeto esta mas cerca
Publicado por: Pablo en Agosto 02, 2011, 10:43:54 AM
Eso de instance_nearest soluciono todo xD
gracias, de verdad, a los dos por la ayuda! :)
Título: Re: Detectar que objeto esta mas cerca
Publicado por: MaanuRP en Agosto 02, 2011, 10:51:35 AM
Cita de: brunoxzx en Agosto 02, 2011, 10:20:46 AM
Bueno yo creo que seria una mejor soluci?n crear un objeto que sea pariente de los objetos que vas a chequear, despu?s chequear con instance_nearest() cual es el objeto pariente mas cercano.

[gml]instance_nearest(x,y,par_objetos)[/gml]

Si no entendiste dejo adjunto

Excelente ejemplo! Un genio :D
Título: Re: Detectar que objeto esta mas cerca
Publicado por: brunoxzx en Agosto 02, 2011, 11:41:40 AM
Que bueno que les sirvi? y que bueno que los 2 aprendieron algo nuevo.