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.

[Tutorial]Como fazer barra de vida com sprites no GameMaker Studio

Tutoriais, videoaulas, guias e downloads para te ajudar nos estudos.
Avatar do usuário
jozgamer
Membro
Membro
Reações: 0
Mensagens: 116
Localização: São paulo

Contato:

[Tutorial]Como fazer barra de vida com sprites no GameMaker Studio

Mensagem por jozgamer » Ter Jun 21, 2016 3:08 pm

E ai pessoal!
 
Aqui é o JOZ de novo com mais um tutorial para vocês.
Quando eu era iniciante eu tive um dilema muito grande: Não fazia ideia de como se fazia uma barra de vida e precisava delas para desenvolver minhas ideias, então fiz jogos que você morria com uma porrada mesmo e problema é de quem jogue.

O tempo passou e eu acabei descobrindo como se fazia por conta própria e então eu criei uma forma simples, rápida, eficiente, personalizável e dinâmica de se fazer barras de vida só para vocês não passarem pelo mesmo perrengue que eu. Não uma, mas várias diferentes e tudo isso com só um código.

Imagem
 
Passo-a-passo:
  1. Você precisa de três sprites do mesmo tamanho;
    1. Para o fundo;
      Imagem
    2. Para o corpo;
      Imagem
    3. A fim de enfrentar;
      Imagem
  2. Coloque o centro do x de todos os 3 sprites no 0;
    Imagem
  3. Clique com o botão direito na pasta Scripts e clique em Create Script;
    Imagem
  4. Chame o Script de scrBarraVida;
    Imagem
  5. Copie e cole o código abaixo que está todo comentado caso você queira entender como funciona;

    Código: Selecionar todos

    /*Script criado para desenhar uma barra de vida com sprites
     *Criado por José Agripino de Lima Junior
     *Criado em 21/11/2015
     *Email: [email protected]
    */
    //Instruções: Para o script funcionar perfeitamente é importante que os 3 sprites da barra tenham a posição central de x = 0
    /*Argumentos do script:
     *argument0 é a posição x da barra de vida
     *argument1 é a posição y da barra de vida
     *argument2 é a quantidade de vida atual
     *argument3 é a quantidade de vida total
     *argument4 é o sprite do fundo da barra
     *argument5 é o sprite do corpo da barra
     *argument6 é o sprite da frente da barra
    **/
    draw_sprite(argument4,0,argument0,argument1); //desenha fundo da barra
    draw_sprite_ext(argument5,0,argument0,argument1,argument2/argument3,1,0,c_white,1); //desenha corpo da barra e (argument2/argument3) calcula a escala de x assim exibindo o restante da vida
    draw_sprite(argument6,0,argument0,argument1); //desenha frente da barra
  6. Pronto está instalado e funcionando;
Exemplos de Uso:
  1. Para colocar a barra de vida na tela existem duas opções;
     
    1. Coloque o código no próprio jogador;
      1. Vá no objeto do jogador e adicione um evento Draw GUI;
        Imagem
      2. Crie uma ação Execute Code e cole esse código dentro;

        Código: Selecionar todos

        scrBarraVida(32,64,hp,hpMax,sprBarraVidaFundo,sprBarraVidaCorpo,sprBarraVidaFrente)
        /*Agumentos:
         *32 é a posição da barra em x
         *64 é a posição da barra em y
         *hp é a vida atual
         *hpMax é a vida máxima
         *sprBarraVidaFundo é o sprite do fundo da barra
         *sprBarraVidaCorpo é o sprite do corpo da barra
         *sprBarraVidaFrente é o sprite da frente da barra
        **/
         
      3. Vá no evento Create com vá na aba control e crie um bloco de código:
        Imagem
         
      4. Cole esse código dentro do bloco de código

        Código: Selecionar todos

        hpMax = 100 //esse é o valor da vida máxima
        hp = hpMax //isso iguala a vida  ao valor máximo
      5. Obs: Nessa implementação a barra de vida vai sumir caso o jogador seja destruído
    2. Crie um objeto separado para a Barra de vida;
      1. Crie um objeto;
      2. Vá no objeto e adicione um evento Draw GUI;
        Imagem
         
      3. Crie uma ação Execute Code e cole esse código dentro:

        Código: Selecionar todos

        //Atenção: substitua objJogador pelo nome que vocÊ colocou no objeto do jogador no tres ligares que aparece no codigo
        
        if instance_exists(objJogador) //Esse if serve para evitar um erro indesejado que ocorre quando o jogador não está na tela. 
        scrBarraVida(32,64,objJogador.hp,objJogador.hpMax,sprBarraVidaFundo,sprBarraVidaCorpo,sprBarraVidaFrente)
        
        /*Argumentos:
        *32 é a posição em x
        *64 é a posição em y
        *objJogador.hp é a vida atual do objeto do jogador
        *objJogador.hpMax é a vida máxima do objeto do jogador
        *sprBarraVidaFundo é o sprite do fundo da barra
        *sprBarraVidaCorpo é o sprite do corpo da barra
        *sprBarraVidaFrente é o sprite da frente da barra
        **/
      4. Vá no evento Create com vá na aba control e crie um bloco de código:
        Imagem
         
      5. Cole esse código dentro do bloco de código

        Código: Selecionar todos

        hpMax = 100 //esse é o valor da vida máxima
        hp = hpMax //isso iguala a vida  ao valor máximo
        instance_create(0,0,objBarraVida) //substitua objBarraVida pelo nome que você deu ao objeto da barra de vida
         
  2. Para colocar a barra de vida em cima de um objeto qualquer;
    1. Vá no objeto do jogador e adicione um evento Draw;
      Imagem
    2. Crie uma ação Execute Code e cole esse código dentro;

      Código: Selecionar todos

      draw_self() //desenha o próprio objeto
      
      scrBarraVida(x - 80,y - 64,hp,hpMax,sprBarraVidaFundo,sprBarraVidaCorpo,sprBarraVidaFrente);
      
      /*Agumentos:
      *x - 80 é a posição em x da barra de vida
      *o x foi para pegar a posição relativa em x do objeto
      * -80 é a metade do tamanho da imagem da barra só que negativa, no meu caso a conta deu -80 
      *y - 64 é a posição em y da barra de vida 
      *o y foi para pegar a posição relativa em y do objeto
      * -64 foi para deixar a barra de vida acima do objeto
      *hp é a vida atual
      *hpMax é a vida máxima
      *sprBarraVidaFundo é o sprite do fundo da barra
      *sprBarraVidaCorpo é o sprite do corpo da barra
      *sprBarraVidaFrente é o sprite da frente da barra
      **/
       
    3. Vá no evento Create com vá na aba control e crie um bloco de código:
      Imagem
    4. Cole esse código dentro do bloco de código

      Código: Selecionar todos

      hpMax = 100 //esse é o valor da vida máxima
      hp = hpMax //isso iguala a vida  ao valor máximo
Dicas: 
  • Você pode usar varias barras de vida diferentes no seu jogo com esse código, é só mudar o sprite que fica nos argumentos 4,5,6;
  • O fundo e a frente não são essências para o o bom funcionamento da barra de vida, são meramente decorativos, se você quiser pode alterar o código e tirá-los;
  • Para botar limites de hp máximo e minimo é fácil, copie e cole isso no evento step do objeto:

    Código: Selecionar todos

    if hp < 0 hp = 0;
    if hp > hpMax hp = hpMax;
  • Se você não colocar limites de hp minimo e hp máximo a barra de vida pode ter comportamentos estranhos, nada que vá travar seu jogo.
[font={defaultattr}]
Em caso de duvida, erro de escrita ou sugestão deixe um comentário.[/font]


Obrigado pela atenção e um bom desenvolvimento para vocês!
 

Avatar do usuário
tiaoferreira
Membro
Membro
Reações: 0
Mensagens: 28

Re: [Tutorial]Como fazer barra de vida com sprites no GameMaker Studio

Mensagem por tiaoferreira » Qua Fev 15, 2017 2:50 pm

Bacana! Eu uso um método mais tradicional, e como tal, talvez não seja muito produtivo:

1 - Crio uma variável booleana, a qual dirá se o objeto está vivo ou morto (0=morto, 1=vivo, ou como queiram); 
2 - crio um sprite com dez imagens, mostrando a barra de HP totalmente cheia,indo a totalmente vazia;
3 - Condiciono o HP do objeto a ser destruído ao sprite. Assim, de acordo com a porcentagem de HP, o sprite muda de frame até chegar ao frame correspondente ao HP = 0. 

Obviamente, meu método não permite observar o declínio do HP do objeto tin-tin-por-tin-tin, apenas a cada 10% decrementados.
O que me consola é que o código é bem miudinho;

4 - Quando o HP chega a menos de 10%, o sprite da barra de HP muda para a exibição do último frame;
5 - Zerando o HP, o sprite vai pro frame de valor = zero e o sprite do objeto em si, toca a animação da morte do objeto;
6 - O objeto é finalmente destruído.

Responder

Quem está online

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