Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
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.
private float startingHealth = 100f;
private float currentHealth;
private Slider healthBar;
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.
public float HealthChange (float value) {
if (currentHealth + value < startingHealth) {
currentHealth += value;
} else {
currentHealth = startingHealth;
}
healthBar.value = currentHealth;
if (currentHealth <= 0) {
Break();
}
return currentHealth;
}
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