Barre della salute
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 10 di 60.
Una barra che si svuota è un'immagine UI con Image Type impostato su Filled. Questa impostazione appare quando l'immagine ha una Source Image; con None, l'Inspector la nasconde. Fill Method Horizontal con Fill Origin Left fa restringere 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 è la parte di salute rimasta: la salute divisa per il suo massimo. Con campi int, si tratta di una divisione intera, e 350 / 500 è 0, quindi converti prima uno dei due valori 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.
Sfida
FacileMostra lo scudo e la salute del cavaliere su due barre.
- Scrivi
ShowBars():shieldBar.fillAmount = (float)shield / maxShield;, e fai lo stesso perhealthBarconhpemaxHp. Chiamala inStart(). - In
TakeDamage, lo scudo assorbeMathf.Min(amount, shield)e il resto viene sottratto dahp, senza mai scendere sotto 0. Poi chiamaShowBars().
Premi «Gioca» e cammina sulle punte: la barra dello scudo si svuota per prima. Poi premi «Verifica».
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 il danno che può; il resto viene sottratto a hp, fino a un minimo di 0. Poi mostra entrambe le barre.
}
}
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Runner infinito
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di inputEsercitati da solo: Playground Unity