Problema al Resucir Vida

Publicado por fedex2020, Abril 30, 2022, 07:16:52 PM

Tema anterior - Siguiente tema

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

fedex2020

Saludos makeros, tengo un problema con la barra de vida de mi personaje, tengo declarada la variable vida de la siguiente forma...

global.vida_personaje1 = 100;

el tema es que cuando el personaje recibe daño, y le resto vida, el step va tan rapido que la vida se reduce al instance practicamente y no se alcansa a apreciar, lo que hice fue lo siguiente....

global.vida_personaje -= 0.15;

Con ese codigo la vida se reduce lentamente, pero el gran problema es que me deja los numeros en decimal, probe colocando floor al principio pero es lo mismo, no me deja de colocar el numero con un punto en el comienzo, agradezco su ayuda, desde ya muchas gracias...

Jeffrey Faper

#1
Ya lo probe y estaba equivocado para poder usar floor() tiene que declarar su variable en el evento step de esta manera
aunque puede disminuir su vida asi global.vida_personaje--; y es practicamente lo mismo

[gml]
//EVENTO STEP JUGADOR
global.vida_personaje=floor(clamp(global.vida_personaje,0,100));
[/gml]

fedex2020

No funciona, ya probe, la vida se reduce muy rapido...

Jeffrey Faper

#3
Eso pasa por que no esta condicionando cada cuando su personaje puede recibir daño
si su personaje esta colisionando contra un enemigo y solamente pone esto global.vida_personaje--; 
en su evento de colision, la vida de su personaje disminuira infinitamente hasta que deje de colisionar  contra el enemigo
por eso es que su vida disminuye rapidamente.
lo que usted necesita es una boleana para controlar cada cuando su jugador puede recibir daño la puede llamar invencible
[gml]
//Si invencible=true salimos del evento de colision
if(invencible){exit}
//En cambio si invencible=false le restamos vida al jugador y activamos la invecibilidad para evitar que su vida descienda rapidamente
else{
global.vida_personaje--;
invencible=true;
alarm[0]=30; //tiempo que durara la invencibilidad
}
//EVENTO ALARMA[0]
invencible=false;
/*
Supongo que usted solo ponia esto global.vida_personaje--; 
esa es la causa de su problema, ya que la vida de su personaje
solo dejara de disminuir cuando deje de colisionar contra el enemigo
*/
[/gml]

fedex2020

por lo que veo no me entiendes lo que quiero intentar hacer, no es un juego de collisiones, solo quiero que cuando el personaje elija un ataque, le redusca vida al enemigo pero no tan rapiamente, y que no me convierta los numeros a decimal, ya que al colocar esto global.vida_enemigo -= 0.17;, la reduce lentamente pero me coloca la vida del enemigo en decimales y no quiero eso...

Jeffrey Faper

#5
Cita de: fedex2020 en Mayo 04, 2022, 09:05:35 PM
por lo que veo no me entiendes lo que quiero intentar hacer, no es un juego de collisiones, solo quiero que cuando el personaje elija un ataque, le redusca vida al enemigo pero no tan rapiamente, y que no me convierta los numeros a decimal, ya que al colocar esto global.vida_enemigo -= 0.17;, la reduce lentamente pero me coloca la vida del enemigo en decimales y no quiero eso...
Bro, lo siento,  pero la culpa es tuya por no poner codigo, sin codigo es dificil entender que esta haciendo y que es lo que realmente quiere hacer.
Simular daño o hacer daño con colisiones, en si es lo mismo, la unica diferencia es que  simulando daño tiene que obtener
el id de la instancia a la que se le aplicara el daño, pero en si las bases son las mismas, si usted no lo entiende creo que esto es lo mas que puedo ayudarle.

DAÑO POR TICKS :

[gml]
//SIMULAR DAÑO POR TICKS
if(keyboard_check_pressed(vk_enter)){
    //CUANTOS TICKS DE DAÑO RECIBIRA NUESTRO TARGET
    global.ticksCount=30;
    }
//EJECUTAR  DAÑO POR TICKS
if(global.ticksCount>0){
    //TICK TIMER
    global.tickTimer++;
    //APLICAR DAÑO POR TICKS A NUESTRO TARGET CADA 1/2 SEGUNDO..CREO
    if(global.tickTimer%30==0){
        global.vida--;
        global.ticksCount--;
        }
    }else{
        global.tickTimer=0;
    }
[/gml]


fedex2020

Ahora si lo entendi, muchas gracias, en verdad te agradezco, graciaaaaaaaaaaaaaaaaaas....

Powered by EzPortal
SMF spam blocked by CleanTalk