tengo dos heroes que detectan al objeto villanos(los villanos son las mismas instancias)

si un heroe esta peleando con una villano


que el otro heroe no pelee con ese por que ya esta peleando


pero si biene otro villano ese heroe no hace nada solo se queda  quieto mientras los otros 2 pelean.


tengo la variable "pelea=0" en el objeto villano
cuendo colisiona con el heroe se detiene a pelear y la varable "pelea=1"

en el heroe tengo 

if villano.pelea=1
{
speed=0
}

if villano.pelea=0
{
move_towards_point(villano.x,villano.y,1)
}

Hola,

Aclarame un detalle, "villano" es el nombre del objeto del villano o es una variable (algo como villano = instance_nearest.....) si es el objeto del villano entonces ese es probablemente el fallo ya que de ese modo siempre se selecciona un villano y no busca a los otros.

No tengo el GM a la mano así que no puedo probar esto, pero creo que debería funcionar:

[gml]
//Creamos una variable que guardara el villano que no este peleando
global.villano_disponible = -1;

//Recorremos todas las instancias del objeto villano
with (obj_villano){
    //Si no esta peleando y no se ha seleccionado otro villano
    if (pelea == 0 && global.villano_disponible == -1){
        //Selecciona este villano
        global.villano_disponible = id;
    }
}

//Si global.villano no es -1 es porque se selecciono un villano
if (global.villano_disponible != -1){
    //Guardamos la variable global en una del heroe
    enemigo = global.villano_disponible;
    //Nos movemos hacía el enemigo
    move_towards_point(enemigo.x,enemigo.y,1);
}
[/gml]

Saludos 8)

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.