INTRODUÇÃO A JOGOS
Aula 04 - Saúde do inimigo
(Atualizado 08/02/2015)
Como o prometido, esta aula será dedicada à saúde do inimigo. Quem não viu as aulas 9 e 10, veja. Na aula anterior expliquei como usar as variáveis para serem a saúde de nossos personagens.
Quando existe uma unica instância de um objeto (Player) usamos uma variável global. Mas quando existem varias instâncias de um mesmo objeto usamos uma variável local (inimigos).
Bom, primeiramente usaremos a mesma engine da aula passada:
[GM:S] DOWNLOAD DA ENGINE
[GM8] DOWNLOAD DA ENGINE
Agora vamos ao objeto inimigo, no evento create e adicionamos o seguinte código:[/url]
Código: Selecionar todos
vida=100
Agora vamos fazer com que o inimigo morra após levar 4 tiros. Va ao evento de colisão entre o inimigo e o tiro e retire o seguinte código:[/url]
Código: Selecionar todos
//Destrói o objeto
instance_destroy()
Neste mesmo evento coloque o seguinte código:[/url]
Código: Selecionar todos
//Retira 25 da saúde do player
vida -= 25
1º tiro: 75
2º tiro: 50
3º tiro: 25
4º tiro: 0
Agora faremos com que quando a vida chegar a zero o inimigo seja destruido. Va ao evento step do inimigo e coloque o seguinte código:[/url]
Código: Selecionar todos
// Se a vida for menor ou igual a zero
if vida<=0
{
//Objeto é destruído
instance_destroy()
}
R: porque caso mude o valor de retirada por um número que não tenha 0 em seu caminho decrescente o objeto não será destruído e o valor de vida continuará negativamente. Ex:[/url]
Código: Selecionar todos
vida -= 33
Percebeu? dessa maneira ele nunca ser igual a zero. Por isso coloque < (menor que), e caso o número for menor o código também será realizado. Então assim você pode retirar qualquer valor de "vida" que se ele for menor que zero o inimigo será destruído.
Agora faça um teste. O inimigo esta sendo morto exatamente com 4 tiros.
Falta somente visualizar a vida do inimigo, que tal fazer healthbars iguais ao do age of empires?
Va ao evento draw do objeto controle e coloque o seguinte código (este deve ser criado em um novo quadradinho separado dos outros códigos):
Legenda:
x1: posição da lateral esquerda da barra
x2: posição da lateral direita da barra
y1: posição da linha superior da barra
y2: posição da linha inferior da barra
amount: variável que estamos usando (no caso, vida)
backcol: cor do fundo da barra
mincol: cor que significa pouca saúde (vermelha)
maxcol: cor que significa boa saúde (verde)
direction: direção para onde vai aumentando a saúde (0=direita)
showback: mostrar fundo da barra (1 significa sim e 0 significa não)
showborder: mostrar borda da barra (1 significa sim e 0 significa não)[/url]
Código: Selecionar todos
draw_healthbar(x,y-2,x+32,y-5,vida,c_black,c_red,c_lime,0,1,1);
Já esta tudo pronto agora, mas precisamos entender as posições x1, y1, x2 e y2 da health bar.
x e y são as posições do objeto (no caso, o inimigo) na room e sempre estão mudando, certo? Exemplo:
Se a posição x do objeto é 100, x+32 é a mesma coisa que 100+32 e como o x muda sempre conforme a posição do objeto a barra vai acompanhar o x e se posicionar 32 pixels a frente dele.
Caso não tenha conseguido, baixe a engine completa:
[GM:S] DOWNLOAD DA ENGINE
[GM8] DOWNLOAD DA ENGINE
Terminamos essa aula. Até a próxima!
Próxima aula: Pontuação
FLWS!