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.
Passo-a-passo:
- Você precisa de três sprites do mesmo tamanho;
- Coloque o centro do x de todos os 3 sprites no 0;
- Clique com o botão direito na pasta Scripts e clique em Create Script;
- Chame o Script de scrBarraVida;
- 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
- Pronto está instalado e funcionando;
- Para colocar a barra de vida na tela existem duas opções;
- Coloque o código no próprio jogador;
- Vá no objeto do jogador e adicione um evento Draw GUI;
- 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 **/
- Vá no evento Create com vá na aba control e crie um bloco de código:
- 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
- Obs: Nessa implementação a barra de vida vai sumir caso o jogador seja destruído
- Vá no objeto do jogador e adicione um evento Draw GUI;
- Crie um objeto separado para a Barra de vida;
- Crie um objeto;
- Vá no objeto e adicione um evento Draw GUI;
- 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 **/
- Vá no evento Create com vá na aba control e crie um bloco de código:
- 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
- Coloque o código no próprio jogador;
- Para colocar a barra de vida em cima de um objeto qualquer;
- Vá no objeto do jogador e adicione um evento Draw;
- 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 **/
- Vá no evento Create com vá na aba control e crie um bloco de código:
- 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
- Vá no objeto do jogador e adicione um evento Draw;
- 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.
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!