Vamos montar duas coisas a primeira será uma barra de vida para nosso inimigo e a segunda será um número que surgira em cima do inimigo quando atacado equivalente ao valor de seu ataque.
Bom já existe bastante tutorial no cite ensinando a criar uma barra de vida, mas eu irei montar o meu também.
O código será o seguinte:
x1,y1,x2,y2 = as coordenadas de onde ira aparecer sua barra de vida x1 y1 é o começo canto esquerdo superior da barra e o x2 y2 é o fim canto direito inferior.
Var da vida = a var que carrega o valor da vida de seu inimigo no casso desta aula a var vida
Cor fundo = a com do fundo e da borda.
Cor vazia = cor que vai ficar quando vazia
Cor cheia = cor quando estiver cheia
Obs.: a barra não fica com a cor de cor vazia, mas sim quando cheia ela fica 100% com a com de cheia e vai trocando com a cor vazia quanto menor ela for.
Direção = que a barra vai diminuir 0 e da direta para esquerda.
Fundo = se 0 ou false o fundo não aparece e se 1 ou [color:657a=#color]true o fundo aparecera.
Borda = se 0 ou false a borda não aparece e se 1 ou true a borda aparecera.
Agora vamos criar um evento o draw do inglês desenho, é o evento onde que coloca os sprites na tela e também onde podemos escrever as coisas. Mas o criemos no botão add evente / Draw e nele coloque um execute code e colocaremos o seguinte script:
- CÓDIGO:
//desenha a barra de vida
draw_healthbar(x - 20,y - 35,x + 20,y - 30,vida,c_black,c_red,c_green,0,true,true)
Partindo do ponto x y do obj fizemos uma barra que terá 40 de largura e 5 de altura no eixo x ele vai de – 20 a + 20 dado 40 de largura e no eixo y vai de – 35 a – 30 dado 5 de altura, colocamos a var vida para ser a vida, e o fundo é preto, a com vai de verde cheia ate vermelha vazia, ela esvazia de direta para esquerda e aparece fundo e borda.
Testando agora você ficara desesperado, e me perguntara: Cadê o desenho do inimigo, e a barra de vida está sempre quase no fim?
O desenho do inimigo some porque até agora não tínhamos colocado o evento draw, quando não existe um evento draw no obj ele mostra o sprite colocado nele sem precisar de script para isso, mas com o evento draw você é obrigado a colocar um script para mostrar o desenho também e o script é esse:
Sprite = o sprite que deve aparecer.
Imagem = é a sub imagem do sprite criado se ele tiver mais de uma imagem.
X,Y = a coordenada que a imagem ira aparecer.
Bom agora é só colocar logo a baixo do script da barra de vida o seguinte script:
- CÓDIGO:
//desenha a imagem do inimigo
draw_sprite(sprite_index,image_index,x,y)
Colocamos o desenho que esta selecionado no sprite e também a sub imagem que o obj esta selecionado e também bem nas coordenadas do obj.
Agora testando vera que voltou a imagem do inimigo.
Mas a barra ainda esta pequena, por quê?
Simples o script que gera a barra de vida aceita um valor de 0 a 100 e pra adequarmos o valor da vida do inimigo com o qual é mostrado na barra devemos fazer uma conta a regra de 3.
E como fazer ela no GM?
Em minha aula 5 eu fiz uma regra de 3 mas não em GML mas agora vamos.
Pense assim:
Em GML:
Resultado é a var que ira armazenar a vida na outra proporção, vida é a vida atual, 100 porque é a outra proporção que queremos deixar, e 5 porque é o máximo de vida.
Agora no evento create adicione mais uma var as vars RPG:
- CÓDIGO:
barra_vida = 0
No step logo a baixo da gravidade e do script de identificação de ataque do player coloque o seguinte comando:
- CÓDIGO:
Barra_vida = vida * 100 / 5
E no evento draw substitua a var vida pela var barra_vida. Pronto agora a barra de vida esta certa.
Agora o dano aparecendo.
Primeiro crie um novo obj e o chame de obj_dano e adicione a ele quatro eventos um create, um alarm0, um setp e um draw:
No create:
- CÓDIGO:
dano = 0 //mostrara o dano tomado
pnc = false //precisaremos dele para o script de gravidade
vspeed = -5 //para ele começar já pulando
hspeed = 0.75 //para ter um movimento na horizontal
alarm[0] = 30 //tepo até o numero sumir
No alarm0:
- CÓDIGO:
instance_destroy()
No evento step:
- CÓDIGO:
gravidade(obj_dano,0.25,pnc)
E no draw:
- CÓDIGO:
draw_text_color(x,y,string(dano),c_white,c_white,c_white,c_white,0.8)
X,Y = coordenadas
String(dano) = string transforma um valor em uma palavra para que possa se escrita, no caso o valor da var dano.
c_white,c_white,c_white,c_white = é a cor da nossa palavra que queremos escrever. E porque 4 c_white? Porque a palavra quando gerada no Gm tem 4 quinas e você pode alterar a cor em cada quina separadamente.
0.8 e para dar uma pequena transparência.
Agora está pronto, nosso obj_dano, mas agora faremos aparecer quando o inimigo apanha, então voltemos ao script do obj inimigo no evento de collision com o obj player e acrescenta esse script logo a baixo do modificando as var:
- CÓDIGO:
//criando o dano
dano = instance_create(x,y,obj_dano);
dano.dano = atk
A var dano armazena a id do novo obj que esta sendo criado e em seguida ele transforma a var dano que esta no obj criado no valor do atk do player porque foi o dano que o inimigo recebeu.
Testando você verá que agora o nosso jogo ficou bem mais interessante com uma vida e dano para nosso inimigo.
E aqui temos uma demo para baixar plelo midia file
Lendo em 2018
ResponderExcluir