Come progettare e codificare una barra della salute in Unity3D
Pioniere in alcuni dei primi videogiochi al mondo, la salute è una meccanica comune che persiste in molti dei titoli più popolari di oggi. La salute consente di utilizzare complesse meccaniche di combattimento, creare la progressione del giocatore e rendere il gioco più intuitivo. Ma come si aggiunge un sistema sanitario ai propri giochi?
Unity3D semplifica l’aggiunta di elementi dell’interfaccia utente 2D ai giochi 3D, quindi è un ottimo punto di partenza per esplorare le barre della salute per la prima volta.
Cosa imparerai
In superficie, questo progetto potrebbe non sembrare complicato. Nonostante ciò, dovrai comprendere diversi concetti chiave di codifica Unity3D per creare una barra della salute funzionante. Ciò significa che c’è molto da imparare durante questo progetto, tra cui:
- Come creare elementi/sprite dell’interfaccia utente 2D in Unity3D.
- Come modificare i componenti degli oggetti di gioco con il codice.
- Come condividere le variabili tra gli script in Unity3D.
Passaggio 1: imposta la scena
Prima di poter iniziare a codificare la tua barra della salute, hai bisogno di una scena con un modello di giocatore a cui applicarla. Per iniziare, puoi seguire la nostra guida al controller di personaggi Unity3D basata sulla fisica per creare un modello di giocatore con controlli di base.
Con una scena e un modello di giocatore in atto, è il momento di aggiungere un elemento dell’interfaccia utente. Fai clic con il pulsante destro del mouse all’interno della finestra Gerarchia e seleziona UI > Immagine . Questo creerà due nuovi elementi nella tua gerarchia: un oggetto padre Canvas e un oggetto figlio Image. Cambia il nome dell’oggetto figlio in Healthbar. Scegli una larghezza, un’altezza e una posizione per la tua barra della salute usando l’ispettore.
Puoi aggiungere un’immagine dell’interfaccia utente leggermente più grande con il colore impostato su nero per fungere da sfondo/bordo per la barra della salute. Assicurati solo che sia sopra la barra della salute nella gerarchia in modo che venga visualizzata dietro di essa.
Questo elemento dell’interfaccia utente funziona come base per la tua barra della salute, ma hai anche bisogno di uno sprite per animarlo. Vai al riquadro Progetto, fai clic con il pulsante destro del mouse e seleziona Crea > 2D > Sprite > Quadrato .
Seleziona la barra della salute dalla gerarchia e trascina lo sprite appena creato nella casella di selezione Immagine sorgente all’interno dell’ispettore. Puoi anche modificare Tipo di immagine in Riempito, Metodo di riempimento in Orizzontale e Origine riempimento in Sinistra. Ora, se esegui il gioco e usi il cursore Quantità riempimento , dovresti vedere la tua barra della salute ridursi e crescere.
Passaggio 2: aggiungi una variabile di salute
Non avrebbe molto senso creare una barra della salute senza una variabile di salute in atto per dettare il suo stato. Altri script devono essere in grado di accedere a questa variabile e ha senso metterla in un punto centrale. Aggiungilo allo script Character Control come float pubblico:
public float playerHealth = 1.0f;
L’utilizzo di un float per questa variabile significa che è possibile rappresentare facilmente qualsiasi percentuale da 0 a 100, in modo che corrisponda alla variabile Fill Amount dell’immagine dell’interfaccia utente della barra della salute. Ad esempio, un playerHealth di 0.5f è il 50% della larghezza della barra della salute.
Passaggio 3: condividere le variabili tra gli script in Unity
Le variabili di solito operano all’interno delle proprie funzioni e script. Ciò li rende inaccessibili da altre funzioni e script a meno che non si intervengano per indicare al codice dove trovare le variabili con cui si desidera lavorare.
Inizia creando un nuovo file di script chiamato Health per ospitare il codice. Puoi trascinare e rilasciare questo script sull’elemento dell’interfaccia utente della barra della salute creato nel primo passaggio. Il codice seguente va nella funzione void Update().
Questo processo inizia con la ricerca dell’oggetto di gioco che possiede la variabile. In questo caso, è l’oggetto Character_Model:
GameObject Character_Model = GameObject.Find("Character_Model");
Successivamente, è il momento di trovare il componente dello script che contiene la variabile con cui devi lavorare.
Character_Control character_Control = Character_Model.GetComponent();
E, infine, puoi estrarre la variabile specifica che stai cercando. In questo caso, è la variabile playerHealth che hai aggiunto al controller del tuo personaggio. Assegna questo a una variabile float all’interno dello script corrente chiamato currentHealth.
currentHealth = character_Control.playerHealth;
Bastano poche righe di codice per ottenere la variabile di cui hai bisogno e puoi applicare questo metodo ogni volta che devi accedere alla salute del tuo giocatore. Il tuo codice dovrebbe assomigliare a questo una volta che hai finito:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Health: MonoBehaviour
{
public float currentHealth;
void Start()
{
}
void Update()
{
GameObject Character_Model = GameObject.Find("Character_Model");
Character_Control character_Control = Character_Model.GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Passaggio 4: programmare l’oggetto di gioco della barra della salute dell’interfaccia utente
Ora che hai creato un elemento dell’interfaccia utente della barra della salute e hai accesso alla variabile della salute del giocatore, è il momento di farli lavorare insieme. Per iniziare, aggiungi una variabile statica privata che conterrà il componente immagine della tua barra della salute:
private static Image Healthbar;
È quindi possibile assegnare il componente immagine a questa variabile all’interno della funzione void Start(), che viene eseguita solo una volta.
Healthbar = GetComponent();
Ora che hai tutte le variabili in posizione, puoi utilizzare il codice del passaggio precedente per impostare la larghezza di riempimento dell’oggetto dell’interfaccia utente della barra della salute. Non è necessario eseguire alcuna conversione qui; sia la salute del giocatore che la quantità di riempimento della barra della salute sono variabili float.
Healthbar.fillAmount = currentHealth;
Con questo codice in atto, la tua barra della salute si riempirà su e giù in base alla variabile della salute trovata nel codice Character_Control. Questo è un po ‘noioso, però, e potrebbe sicuramente fare con un po’ di colore.
Inizia aggiungendo un nuovo colore per rendere la barra della salute di un colore verde chiaro quando il giocatore ha molta salute.
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
Successivamente, aggiungi un’istruzione if per verificare se la salute del giocatore è superiore a 0,3f, ovvero il 30% o più. Se è superiore a 0,3f, imposta la barra della salute in modo che corrisponda al colore appena aggiunto. Se è inferiore a 0,3f, trasforma la barra della salute in rosso.
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
Passaggio 5: testare il codice
Come puoi vedere dal codice completo qui sotto, questo progetto è abbastanza semplice quando è tutto insieme. Ovviamente, però, hai bisogno di un modo per testare il tuo codice.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Health: MonoBehaviour
{
private static Image Healthbar;
public float currentHealth;
void Start()
{
Healthbar = GetComponent();
}
void Update()
{
GameObject Character_Model = GameObject.Find("Character_Model");
Character_Control character_Control = Character_Model.GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
}
}
Puoi aggiungere una singola riga di codice allo script Character_Control per rendere possibile il test. Ogni volta che il giocatore preme il tasto W per andare avanti, rimuovi una piccola quantità di salute. Puoi aggiungere lo stesso codice a qualsiasi script con accesso alla variabile playerHealth per gli stessi risultati:
playerHealth -= 0.001f;
Puoi anche prendere in considerazione l’aggiunta di risorse uniche al tuo progetto Unity. Puoi trovare risorse Unity gratuite sul Web, dandoti la possibilità di ravvivare il tuo progetto senza dover spendere soldi.
Costruire barre della salute in Unity3D
Il tuo gioco sta iniziando a prendere forma ora che hai una barra della salute per il tuo personaggio. C’è ancora molto lavoro da fare, ma ora dovresti avere alcune delle competenze chiave di cui hai bisogno per iniziare a fare progressi reali. Certo, però, non fa mai male leggere altre guide.
Lascia un commento