Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Last_Whisper en Enero 05, 2015, 01:54:41 PM

Título: Límite barra de vida
Publicado por: Last_Whisper en Enero 05, 2015, 01:54:41 PM
Hola, gamemakeros! Somos dos amigos, y estamos haciendo un juego (que proximamente sera presentado como demo), y tenemos un problema con la salud. La salud va en una barra, y queremos que en principio sea 100... y el problema viene en que no sabemos como hacer que cuando se obtenga un objeto que te recupere salud, esta no suba a mas de 100. Lo intente con check variable, y si es mas de 100 se pone a 100, pero queda horrible ya que aparte de la barra sale el numero de vida, y este se ve aumentar al igual que la barra, y despues volver a 100. alguna solucion? Gracias!
Título: Re:Límite barra de vida
Publicado por: omick en Enero 05, 2015, 02:31:15 PM
Hola..    me pregunto que es lo que tienes en evento draw para que suceda eso...     
... una alternativa para hacer barra horizontal de vida es crear un sprite de por ejemplo 1x8 pixeles llamado sprBarra y en el evento draw colocas un codigo y pon:
  draw_sprite_stretched(sprBarra,-1,posx,posy,global.salud,8);
// recuerda : draw_sprite_stretched(sprite, subimagen, x, y,ancho,alto)


.... pero regresando a lo tuyo, asegurate de no estar dibujando la variable ademas de la barra de vida  :)

Título: Re:Límite barra de vida
Publicado por: nyan.zhall en Enero 06, 2015, 12:34:15 AM
Tal vez funcione si escribes:
if(salud>100)
{salud=100}
Título: Re:Límite barra de vida
Publicado por: Last_Whisper en Enero 08, 2015, 05:24:18 PM
Esto es lo que tengo en el codigo del evento draw, en el object de la barra de salud:


draw_sprite(Barra_salud,0,x,y);

var estreche;
estreche = global.salud/limite*200

draw_sprite_stretched(Barra_salud,1,x,y,estreche,24)

if global.salud <= 50 {draw_sprite_stretched(Barra_salud,2,x,y,estreche,24);}
if global.salud <= 20 {draw_sprite_stretched(Barra_salud,3,x,y,estreche,24);}

draw_text(x+100,y+25,global.salud);
draw_set_font(barra_vida);
draw_set_color(c_white);

if global.salud > 100
{global.salud=100};

el problema es que cuando cojo el objeto que me da mas vida, funciona y vuelve a 100, pero se ve durante una fraccion de segundo como la barra y el numero aumentan y luego disminuyen
Título: Re:Límite barra de vida
Publicado por: Marth en Enero 08, 2015, 08:39:09 PM
Si la salud se representa con números puede dar ese problema, la solución es que sea inmediata la comprobación de que rebosa el límite, para así no dar tiempo a mostrar el decremento o hacerlo con una barra porcentual de salud.
Existe una función llamada draw_healthbar que permite dibujar una barra de salud porcentual.
Título: Re:Límite barra de vida
Publicado por: Last_Whisper en Enero 10, 2015, 01:58:56 PM
Existe alguna funcion para hacer algo como poner un limite? Por ejemplo, que si la vida es mayor de 100, NO pueda subir mas de 100. La funcion de draw healtbar no la puedo usar ya que usamos una barra hecha por nosotros. Gracias por las respuestas!
Título: Re:Límite barra de vida
Publicado por: Clamud en Enero 10, 2015, 05:06:12 PM
Debes mover estas lineas al principio del código:
[gml]
if global.salud > 100
{global.salud=100};
[/gml]
lo que pasa es que cuando la variable salud se incrementa en exceso se dibuja la barra con exceso, después se ejecutan las líneas que ponen el límite, y la barra con límite se dibuja hasta el siguiente evento Draw, el orden es lo que está afectando, todo lo demás parece estar bien.
Título: Re:Límite barra de vida
Publicado por: Last_Whisper en Enero 10, 2015, 09:52:34 PM
Muchas gracias! Ya funciona perfectamente. Hay alguna forma de dar "puntos" o "gracias" a los usuarios?