Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[Dúvida] Health bar tamanho certo

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Cheguevara
Game Designer
Game Designer
Reações: 0
Mensagens: 44

[Dúvida] Health bar tamanho certo

Mensagem por Cheguevara » Seg Abr 24, 2017 3:51 am

Bom eu gostaria de ajuda com um problema que tentei muito resolver, na barra de HP estou usando o evento draw_sprite_ext, mas acontece que quando o hp do personagem aumenta, exemplo o HP dele é 5, quando ele ganha +5 a barra sai da HUD por que ela aumenta de tamanho, eu queria que mesmo ele ganhando os +5 fica-se como ela estive-se 100% sem passar a HUD.

Código: Selecionar todos

///CODIGO USADO \/
draw_sprite(spr_hud,1,x+10, y+16)

draw_sprite_ext(spr_hud_hp,0,88,23,obj_player_stats.hp/5,1,0,c_white,1)
Imagem Antes do +5
Imagem Depois do +5

Avatar do usuário
Thiago Silva Thiago
Membro
Membro
Reações: 0
Mensagens: 25

Re: [Dúvida] Health bar tamanho certo

Mensagem por Thiago Silva Thiago » Seg Abr 24, 2017 4:27 pm

Recomendo criar um limitador de vida no jogador.
Para isso, coloque isso no creat do jogador

Código: Selecionar todos

max_hp = 5;
hp = max_hp;
Você pode fazer que sempre que a vida ultrapassar o limite, volte ao normal
Use isso no step

Código: Selecionar todos

if (hp > max_hp)
hp = max_hp;
Assim, a vida nunca ultrapassara o valor da vida máxima.
E quando você for recuperar a vida do personagem, use

Código: Selecionar todos

hp += valor(5 or exemplo);
Quando você quiser aumentar o limite de vida do personagem é só aumentar a var hp_max

Código: Selecionar todos

max_hp += valor(5 or exemplo);
Ai o problema básico esta resolvido...
Mas o problema é que sempre que você for aumentar o limite de vida dele, a hud pode ter problema.
Ai com base no valor da maxima vida e a vida, você usa sistema de porcentagem, ficaria mais ou menos assim o draw da hud

Código: Selecionar todos

    draw_sprite(spr_hud,1,x+10, y+16);
    var onepixel ,w ,size;
    w = sprite_get_width(spr_hud_hp);
    onepixel = 1/w;
    size = (obj_player_stats.hp/obj_player_stats.max_hp)*10;
    draw_sprite_ext(spr_hud_hp,0,88,23,onepixel*size,1,0,c_white,1)
Se você fizer tudo que te falei e raciocinar um pouco, você tera solucionado esses problemas.
20 anos, estudante de linguagens de programação.
Uso Godot Engine.

Avatar do usuário
Cheguevara
Game Designer
Game Designer
Reações: 0
Mensagens: 44

Re: [Dúvida] Health bar tamanho certo

Mensagem por Cheguevara » Ter Abr 25, 2017 5:22 pm

Thiago Silva Thiago escreveu:Recomendo criar um limitador de vida no jogador.
Para isso, coloque isso no creat do jogador

Código: Selecionar todos

max_hp = 5;
hp = max_hp;
Você pode fazer que sempre que a vida ultrapassar o limite, volte ao normal
Use isso no step

Código: Selecionar todos

if (hp > max_hp)
hp = max_hp;
Assim, a vida nunca ultrapassara o valor da vida máxima.
E quando você for recuperar a vida do personagem, use

Código: Selecionar todos

hp += valor(5 or exemplo);
Quando você quiser aumentar o limite de vida do personagem é só aumentar a var hp_max

Código: Selecionar todos

max_hp += valor(5 or exemplo);
Ai o problema básico esta resolvido...
Mas o problema é que sempre que você for aumentar o limite de vida dele, a hud pode ter problema.
Ai com base no valor da maxima vida e a vida, você usa sistema de porcentagem, ficaria mais ou menos assim o draw da hud

Código: Selecionar todos

    draw_sprite(spr_hud,1,x+10, y+16);
    var onepixel ,w ,size;
    w = sprite_get_width(spr_hud_hp);
    onepixel = 1/w;
    size = (obj_player_stats.hp/obj_player_stats.max_hp)*10;
    draw_sprite_ext(spr_hud_hp,0,88,23,onepixel*size,1,0,c_white,1)
Se você fizer tudo que te falei e raciocinar um pouco, você tera solucionado esses problemas.
Obrigado pela ajuda, irei testar e botar a mente para rodar, assim que der resultado dou um up aqui no tópico.
Edit: @Thiago Silva Thiago
Testei aqui e me parece que esta funcionando, porém quando se eleva o level, o hp cai de forma que não chega a completar a barra da hud, sempre fica na metade.

Avatar do usuário
Thiago Silva Thiago
Membro
Membro
Reações: 0
Mensagens: 25

Re: [Dúvida] Health bar tamanho certo

Mensagem por Thiago Silva Thiago » Ter Abr 25, 2017 10:59 pm

É verdade... Tem um erro.
Troque isso

Código: Selecionar todos

    draw_sprite(spr_hud,1,x+10, y+16);
    var onepixel ,w ,size;
    w = sprite_get_width(spr_hud_hp);
    onepixel = 1/w;
    size = (obj_player_stats.hp/obj_player_stats.max_hp)*10;
    draw_sprite_ext(spr_hud_hp,0,88,23,onepixel*size,1,0,c_white,1)
Por isso

Código: Selecionar todos

    draw_sprite(spr_hud,1,x+10, y+16);
    var onepixel ,w ,size;
    w = sprite_get_width(spr_hud_hp);
    onepixel = 1/w;
    size = (obj_player_stats.hp/obj_player_stats.max_hp)*w;
    draw_sprite_ext(spr_hud_hp,0,88,23,onepixel*size,1,0,c_white,1)
20 anos, estudante de linguagens de programação.
Uso Godot Engine.

Avatar do usuário
Cheguevara
Game Designer
Game Designer
Reações: 0
Mensagens: 44

Re: [Dúvida] Health bar tamanho certo

Mensagem por Cheguevara » Qua Abr 26, 2017 5:42 pm

Thiago Silva Thiago escreveu:É verdade... Tem um erro.
Troque isso

Código: Selecionar todos

    draw_sprite(spr_hud,1,x+10, y+16);
    var onepixel ,w ,size;
    w = sprite_get_width(spr_hud_hp);
    onepixel = 1/w;
    size = (obj_player_stats.hp/obj_player_stats.max_hp)*10;
    draw_sprite_ext(spr_hud_hp,0,88,23,onepixel*size,1,0,c_white,1)
Por isso

Código: Selecionar todos

    draw_sprite(spr_hud,1,x+10, y+16);
    var onepixel ,w ,size;
    w = sprite_get_width(spr_hud_hp);
    onepixel = 1/w;
    size = (obj_player_stats.hp/obj_player_stats.max_hp)*w;
    draw_sprite_ext(spr_hud_hp,0,88,23,onepixel*size,1,0,c_white,1)
Valeu thiago deu certinho, quero você testando meu jogo em
:pele:

Avatar do usuário
Thiago Silva Thiago
Membro
Membro
Reações: 0
Mensagens: 25

Re: [Dúvida] Health bar tamanho certo

Mensagem por Thiago Silva Thiago » Qui Abr 27, 2017 3:47 pm

Claro, gostarei muito..
Adoro testar jogos, além do mais, a melhor forma de você poder melhora-lo, é ouvindo a opinião dos outros...
Estou no aguardo colega!
20 anos, estudante de linguagens de programação.
Uso Godot Engine.

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante