Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula

arrow_back Aula 14 - Criação de Elementos em Tempo de Execução, Dano e Elementos Coletáveis

2. Adicionando dano ao Jogo

Outro elemento importante do jogo é o dano. Em nosso cenário, temos dois casos diferentes. Caso o jogador caia em algum buraco, ele perderá toda a sua vida. Caso entre em contato com um míssil, tomará o dano igual ao configurado no script do míssil.

Para que o nosso personagem possa tomar esse dano, precisamos alterar um pouco o nosso PlayerController script, adicionando a ele variáveis de energia restante e também de energia total, pois precisamos evitar que ele se cure mais do que pode. Essa variáveis podem ser vistas na Listagem 3.

Listagem 3 - Novas variáveis criadas no PlayerController.
Fonte: Elaborada pelo autor

A primeira variável diz respeito à vida total, para evitarmos passar do limite em caso de uma cura encontrada, ou mesmo de um reinício. Já a segunda, indica quanto de energia restante o personagem possui naquele momento. Utilizaremos isso para saber, caso diminua de zero, que uma tentativa foi perdida. Também utilizaremos esse valor para configurar o posicionamento da healthBar, uma referência ao Slider que adicionamos na aula passada.

Com essas três variáveis podemos implementar o novo código necessário para o Player responder a qualquer dano ou cura – o método HealthChange. Esse método irá receber uma variável e alterar a vida de acordo com o valor recebido, respeitando sempre o limite máximo e finalizando a tentativa atual caso o limite mínimo seja ultrapassado. O código pode ser visto na Listagem 4.

Listagem 4 - Método HealthChange, adicionado ao final do script PlayerController.
Fonte: Elaborada pelo autor.

O método é bem simples! Caso a alteração resulte em um valor maior que o máximo, alteramos para o máximo. Caso contrário, alteramos para o novo valor, após o dano ou cura. Em seguida, utilizamos a propriedade value de nosso Slider para indicar o novo valor que ele deve exibir. Isso é feito com o comando healthBar.value = currentHealth. Por fim, fazemos um teste simples. Se a quantidade atual de vida for menor que 0, ativamos o método Break para finalizar a tentativa. Retornamos, ao final do método, o valor atual da vida para que o componente que causou a alteração possa agir.

Versão 5.3 - Todos os Direitos reservados