Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Barra vida Enemigos desaparecen al mismo tiempo(SOLUCIONADO)  (Leído 314 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Bangaran

  • Habitual
  • *
  • Puntos: 33
  • Mensajes: 16
  • Sexo: Masculino
    • Ver Perfil
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
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


STEP
///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);
}

DRAW GUI
///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
« última modificación: Septiembre 16, 2020, 01:27:32 am por Bangaran »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.