Menu
CoddyTech

Barre della salute

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 10 di 56.

Una barra che si svuota è un'immagine UI con Image Type impostato su Filled. Questa impostazione compare quando all'immagine è assegnata una Source Image; se è None, l'Inspector la nasconde. Fill Method Horizontal con Fill Origin Left restringe la barra verso l'estremità sinistra, e fillAmount, da 0 a 1, indica quanta parte viene disegnata. Un'immagine scura dietro mostra la parte vuota. Unity limita fillAmount, quindi 1.4 disegna una barra piena e -0.2 una vuota.

fillAmount indica la parte di salute rimanente: la salute divisa per il suo massimo. Con campi int si tratta di una divisione intera, e 350 / 500 è 0, quindi converti prima un lato in float. Image si trova in UnityEngine.UI. Questa barra del boss viene aggiornata dopo ogni colpo:

public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;

public void Hit(int damage)
{
    bossHp = Mathf.Max(bossHp - damage, 0);
    bossBar.fillAmount = (float)bossHp / bossMaxHp;   // 350 / 500 = 0.7
}

Anche il colore della barra può seguire la salute: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); è verde quando la barra è piena e diventa rossa man mano che si svuota.

challenge icon

Sfida

Facile

Il cavaliere ha uno scudo che assorbe i danni prima che vengano sottratti alla sua salute. Le frecce la fanno muovere (Mover.cs) e le punte le infliggono 30 danni quando ci cammina sopra (Spikes.cs). Scrivi Knight.cs; nella scena sono collegati healthBar e shieldBar, che nella scena sono vuoti:

  • hp parte da maxHp (80) e shield da maxShield (40), ed entrambe le barre partono piene.
  • TakeDamage(int amount): lo scudo assorbe la quantità di danno che può in base a quanto gli resta, e il resto viene sottratto da hp, che non scende mai sotto 0.
  • Dopo ogni colpo, entrambe le barre mostrano ciò che resta: shieldBar mostra lo scudo rispetto a maxShield, healthBar mostra gli hp rispetto a maxHp.

Premi Play, cammina sulle punte alcune volte, poi premi Check.

Provalo tu

using UnityEngine;
using UnityEngine.UI;

public class Knight : MonoBehaviour
{
    public Image healthBar;
    public Image shieldBar;
    public int maxHp = 80;
    public int maxShield = 40;
    private int hp;
    private int shield;

    void Start()
    {
        hp = maxHp;
        shield = maxShield;
        // Riempi entrambe le barre
    }

    public void TakeDamage(int amount)
    {
        // Lo scudo assorbe quanto può; il resto viene sottratto a hp, fino a 0. Poi mostra entrambe le barre.
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi