Hola amigos tengo una barra de vida para los enemigos
Es el mismo enemigo por ende el mismo objeto
pero cuando ataco a uno de ellos !! la barra se les baja a todos
que podria hacer para que no me suceda eso
coloco el codigo con el que gestiono la parte de la vida y de la barra de vida del enemigo
CREATE
[gml]Create
///Inicializacion
event_inherited();
enum es {
parado = serpienteParado,
corriendo = serpienteCorriendo,
atacando = serpienteAtacando,
muriendo = serpienteMuriendo
}
dir = "abajo"; //Direccion miramos por defecto
estado = es.parado; //Estado por defecto
//vida = 10; //Vida por defecto
radio_ataque = 18; //Radio para empezar a atacar
crear_ataque = true; //Crea el ataque
perseguir = false; //Enemigo nos persige
//Codigo para caminata aleatoria
dx = -1; // Destino X al que se moverá el conejo, -1 = ninguno
dy = -1; // Destino Y al que se moverá el conejo, -1 = ninguno
alarm[0] = room_speed * choose(1,2,3); //Para generar nueva posicion
//vida enemigo
vida = 10; //Vida por defecto
vidaMaxE = vida;
//variables del contador
LongitudE = 40; //longitud del contador
CalibreE = 0; //valor del contador
//regeneracionVidaPlayer = 0; //tiempo regenarion vida[/gml]
STEP
[gml]///Gestión de estado de movimiento, dirección y muerte
//Determinamos direccion
if (vv > 0) dir = "abajo";
else if (vv < 0) dir = "arriba";
else if (vh > 0) dir = "derecha";
else if (vh < 0) dir = "izquierda";
//Si no estamos atacando comprovamos estados parado y caminar
if (estado != es.atacando){
if (dir != "") estado = es.corriendo;
if (vh == 0 and vv == 0) estado = es.parado;
}
//Y si estamos atacando nos paramos
else {
vh = 0;
vv = 0;
//Arreglar direccion solo si atacamos
grados = point_direction(x,y,obj_player.x,obj_player.y);
if (grados < 45 or grados > 315) dir = "derecha";
else if (grados >= 45 and grados < 135) dir = "arriba";
else if (grados >= 135 and grados < 225) dir = "izquierda";
else if (grados >= 225 and grados <= 315) dir = "abajo";
}
//Comprobar vida y muerte (prioridad)
if (vida <= 0) {
estado = es.muriendo;
colision = false;
vh = 0;
vv = 0;
}
//-----------------------------------------------------------------------------------------------------
///Gestion valor y regeneracion de la vida
if (instance_exists(obj_serpiente)){
CalibreE = round((obj_serpiente.vida * LongitudE) / obj_serpiente.vidaMaxE);
}[/gml]
DRAW GUI
[gml]///Dibuja barra vida
draw_sprite_stretched(spr_barraVida, 1, x-22, y-32, LongitudE, 7);//fondo del contador
draw_sprite_stretched(spr_barraVida, 0, x-22, y-32, CalibreE, 7);//contador
[/gml]