Mayo 23, 2015, 09:09:01 PM Ultima modificación: Mayo 23, 2015, 09:18:00 PM por zHeMaa
Buenas a todos, acabo de crear un personaje npc (un compañero) que lo que quiero es que ataque a los enemigos cercanos, o mejor dicho.. al mas cercano, por ejemplo si vienen 5 que ataque primero al mas cercano y así sucesivamente hasta el ultimo, que seria el mas lejano.

No se que código usar exactamente.. ni como plantearlo, supongo que seria un "distance_to_object" pero como os digo.. he buscado información sobre el código y no se como plantearlo para que funcione 100%.

Gracias de antemano!

Edito: Después del código que funcione ira el código de instance_create y la bala, que no lo había dicho.

1. Si hay distintos objetos enemigos, agruparlos todos bajo un mismo parent. Si sólo hay un objeto enemigo, esto no es necesario

2. Crear algunas variables en el player.
[gml]
id_objetivo = noone
atacar = false
[/gml]

3 Decidir si se debe atacar y elegir enemigo a atacar [STEP]
[gml]
if instance_exists(obj_padre_enemigo) and (!atacar)
{
     id_objetivo = instance_nearest(x, y, obj_padre_enemigo)
     atacar = true
}

if (atacar) and (instance_exists(id_objetivo) )
{
      //Rutinas para atacar, esto ya depende de lo que quieras hacer
     //Aquí hay que usar la variable id_objetivo que indica a qué instancia se debe atacar
}
[/gml]
Evento destroy de obj_padre_enemigo
[gml]
obj_player.id_objetivo = noone
obj_player.atacar = false
[/gml]

Para responderte necesitamos un poco más de info sobre de que va el juego, por ejemplo controlas al personaje? o se mueve automaticamente igual que los enemigos?

Cita de: penumbra en Mayo 23, 2015, 09:19:48 PM
1. Si hay distintos objetos enemigos, agruparlos todos bajo un mismo parent. Si sólo hay un objeto enemigo, esto no es necesario

2. Crear algunas variables en el player.
[gml]
id_objetivo = noone
atacar = false
[/gml]

3 Decidir si se debe atacar y elegir enemigo a atacar [STEP]
[gml]
if instance_exists(obj_padre_enemigo) and (!atacar)
{
     id_objetivo = instance_nearest(x, y, obj_padre_enemigo)
     atacar = true
}

if (atacar) and (instance_exists(id_objetivo) )
{
      //Rutinas para atacar, esto ya depende de lo que quieras hacer
     //Aquí hay que usar la variable id_objetivo que indica a qué instancia se debe atacar
}
[/gml]
Evento destroy de obj_padre_enemigo
[gml]
obj_player.id_objetivo = noone
obj_player.atacar = false
[/gml]

Funciona a la perfección! Gracias! :)

como puedo aplicar ese codigo,,, no entiendo como va
Reyko500