Menu
CoddyTech

Barras de Vida

Lição 16 de 18 do curso Jogo de Unity: Defesa de Torres da Coddy.

Uma barra sobre cada inimigo mostra quanta vida ainda resta. No prefab do inimigo, ela é composta por dois cubos finos: um fundo escuro e um preenchimento verde à sua frente. A largura do preenchimento é a vida restante dividida pela vida total, um número de 0 a 1, e multiplicar por ele a escala x do preenchimento faz com que ele fique mais curto. Um cubo, porém, é escalado em torno do centro, então o preenchimento encolheria em direção ao meio pelas duas extremidades. O preenchimento fica sob um objeto pivot vazio na extremidade esquerda da barra, e o script escala o pivot: tudo sob ele encolhe em direção a essa extremidade, e a barra se esvazia da direita para a esquerda.

A fração precisa ser calculada com números de ponto flutuante. health / data.maxHealth divide dois ints, e C# descarta a parte fracionária de uma divisão de ints: 6 / 9 é 0, então a barra pareceria vazia depois do primeiro golpe. Converter um dos lados primeiro, (float)health / data.maxHealth, resulta em 0.67. Um tanque de água cujo nível sobe a partir do pivot na parte inferior:

float level = (float)water / capacity;
waterPivot.localScale = new Vector3(1f, level, 1f);

Uma barra cheia não informa nada ao jogador, então ela começa oculta: o prefab a mantém inativa, e o primeiro golpe a ativa. Um objeto inativo não recebe Update, mas seus métodos ainda podem ser chamados. Cada inimigo é sua própria cópia do prefab, com sua própria barra.

challenge icon

Desafio

Difícil
  1. Em HealthBar, adicione um Transform serializado fill (o Inspector fornece o FillPivot da barra) e public void Show(float fraction), que ativa o GameObject da barra e escala fill para fraction no eixo x.
  2. Em Enemy, adicione um campo serializado healthBar (um HealthBar). Sempre que TakeDamage reduzir a vida, mostre a vida restante como uma fração de maxHealth.

Cada prefab de inimigo tem sua barra: inativa, com o script HealthBar, e o preenchimento sob um pivô na borda esquerda. Pressione Jogar e observe as barras enquanto as torres disparam; depois, Verificar.

Experimente você mesmo

using UnityEngine;

// Vem depois: a barra acima de um inimigo que mostra quanta vida ele ainda tem.
public class HealthBar : MonoBehaviour
{
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Jogo de Unity: Defesa de Torres