I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

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.
  • instagram viewer
  • 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 il nostro guida del controller di carattere 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. Fare clic con il tasto destro all'interno della finestra Gerarchia e selezionare interfaccia utente > 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 Creare > 2D > Sprite > Piazza.

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 cambiare Tipo di immagine a Riempito, Metodo di riempimento a Orizzontale e Riempi origine a sinistra. Ora, se esegui il gioco e usi il file Importo di riempimento cursore dovresti vedere la tua barra della salute ridursi e crescere.

Se non riesci a visualizzare il menu del componente dell'interfaccia utente, vai a Finestra > Gestore pacchettie assicurati di aver installato il pacchetto 2D.

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:

pubblicogalleggiante giocatoreSalute = 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, una salute del giocatore 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. Trovare("Carattere_Modello");

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:

utilizzando Sistema. Collezioni;
utilizzando Sistema. Collezioni. Generico;
utilizzando UnityEngine;
utilizzando UnityEngine. interfaccia utente;

pubblicoclasseSalute: Monocomportamento
{
pubblicogalleggiante attualeSalute;

vuotoInizio()
{
}

vuotoAggiornamento()
{
GameObject Character_Model = GameObject. Trovare("Carattere_Modello");
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:

privatostatico Barra della salute dell'immagine;

È quindi possibile assegnare il componente immagine a questa variabile all'interno della funzione void Start(), che viene eseguita solo una volta.

Barra della salute = 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.

Colore verdeSalute = nuovo Colore(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.

Se (CurrentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} altro {
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.

utilizzando Sistema. Collezioni;
utilizzando Sistema. Collezioni. Generico;
utilizzando UnityEngine;
utilizzando UnityEngine. interfaccia utente;

pubblicoclasseSalute: Monocomportamento
{
privatostatico Barra della salute dell'immagine;
pubblicogalleggiante attualeSalute;

vuotoInizio()
{
Barra della salute = GetComponent();
}

vuotoAggiornamento()
{
GameObject Character_Model = GameObject. Trovare("Carattere_Modello");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;

Colore verdeSalute = nuovo Colore(0.6f, 1, 0.6f, 1);

Se (CurrentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} altro {
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.001 f;

Puoi anche prendere in considerazione l'aggiunta di risorse uniche al tuo progetto Unity. Puoi trovare risorse Unity gratuite attraverso il 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.