Hola. Si entendí bien, el enemigo es obj_alien y el jugador es obj_granjero.
El problema está en que el objeto jugador responde a las variables obj_alien.x y obj_alien.y que son las coordenadas de la primera instancia creada de obj_alien, así que aunque tengas muchos enemigos cercanos, si la primera instancia creada está muy lejos, no cambiará su comportamiento.
Para solucionarlo deberías conocer el id de la instancia más cercana usando la función instance_nearest(). Podrías usar un código como éste:
[gml]alien_cercano = instance_nearest( x, y, obj_alien );[/gml]
Entonces debes modificar tu script, cambiando "obj_alien" con "(alien_cercano)" [conservando los paréntesis].
Espero que sea entendible.
El problema está en que el objeto jugador responde a las variables obj_alien.x y obj_alien.y que son las coordenadas de la primera instancia creada de obj_alien, así que aunque tengas muchos enemigos cercanos, si la primera instancia creada está muy lejos, no cambiará su comportamiento.
Para solucionarlo deberías conocer el id de la instancia más cercana usando la función instance_nearest(). Podrías usar un código como éste:
[gml]alien_cercano = instance_nearest( x, y, obj_alien );[/gml]
Entonces debes modificar tu script, cambiando "obj_alien" con "(alien_cercano)" [conservando los paréntesis].
Espero que sea entendible.