So entwerfen und codieren Sie eine Gesundheitsleiste in Unity3D
Gesundheit wurde in einigen der frühesten Videospiele der Welt entwickelt und ist ein gängiger Mechanismus, der in vielen der beliebtesten Titel von heute fortbesteht. Die Gesundheit ermöglicht es, komplexe Kampfmechaniken einzusetzen, Spielerfortschritte zu erstellen und Ihr Spiel intuitiver zu gestalten. Aber wie fügt man seinen eigenen Spielen ein Gesundheitssystem hinzu?
Unity3D macht es einfach, 2D-UI-Elemente zu 3D-Spielen hinzuzufügen, also ist es ein großartiger Ort, um zum ersten Mal Gesundheitsbalken zu erkunden.
Was du lernen wirst
Oberflächlich betrachtet mag dieses Projekt nicht kompliziert erscheinen. Trotzdem müssen Sie einige wichtige Unity3D-Codierungskonzepte verstehen, um eine funktionierende Gesundheitsleiste zu erstellen. Das bedeutet, dass es beim Durchlaufen dieses Projekts viel zu lernen gibt, darunter:
- So erstellen Sie 2D-UI-Elemente/Sprites in Unity3D.
- So bearbeiten Sie Spielobjektkomponenten mit Code.
- So teilen Sie Variablen zwischen Skripts in Unity3D.
Schritt 1: Richten Sie Ihre Szene ein
Bevor Sie mit dem Codieren Ihrer Gesundheitsleiste beginnen können, benötigen Sie eine Szene mit einem Spielermodell, auf das sie angewendet werden kann. Um loszulegen, können Sie unserem physikbasierten Unity3D-Charakter-Controller-Leitfaden folgen, um ein Spielermodell mit grundlegenden Steuerelementen zu erstellen.
Nachdem eine Szene und ein Spielermodell vorhanden sind, ist es an der Zeit, ein UI-Element hinzuzufügen. Klicken Sie mit der rechten Maustaste in das Hierarchiefenster und wählen Sie UI > Image aus . Dadurch werden zwei neue Elemente in Ihrer Hierarchie erstellt: ein übergeordnetes Canvas-Objekt und ein untergeordnetes Image-Objekt. Ändern Sie den Namen des untergeordneten Objekts in Healthbar. Wählen Sie mit dem Inspektor eine Breite, Höhe und Position für Ihre Gesundheitsleiste aus.
Sie können ein etwas größeres UI-Bild hinzufügen, dessen Farbe auf Schwarz eingestellt ist, um als Hintergrund/Rahmen für die Gesundheitsleiste zu fungieren. Stellen Sie einfach sicher, dass es sich in der Hierarchie über der Gesundheitsleiste befindet, sodass es dahinter angezeigt wird.
Dieses UI-Element dient als Grundlage für Ihre Gesundheitsleiste, aber Sie benötigen auch ein Sprite, um es zu animieren. Wechseln Sie zum Bereich Projekt, klicken Sie mit der rechten Maustaste und wählen Sie Erstellen > 2D > Sprites > Quadrat aus .
Wählen Sie die Gesundheitsleiste aus der Hierarchie aus und ziehen Sie das soeben erstellte Sprite in das Auswahlfeld für das Quellbild im Inspektor. Sie können den Bildtyp auch auf Gefüllt, die Füllmethode auf Horizontal und den Füllursprung auf Links ändern. Wenn Sie jetzt Ihr Spiel ausführen und den Füllbetrag – Schieberegler verwenden, sollte Ihr Gesundheitsbalken schrumpfen und wachsen.
Schritt 2: Fügen Sie eine Zustandsvariable hinzu
Es würde nicht viel Sinn machen, einen Gesundheitsbalken ohne eine Gesundheitsvariable zu erstellen, die seinen Zustand bestimmt. Andere Skripte müssen auf diese Variable zugreifen können, und es ist sinnvoll, sie an einer zentralen Stelle zu platzieren. Fügen Sie es dem Character Control-Skript als öffentliches Float hinzu:
public float playerHealth = 1.0f;
Die Verwendung eines Floats für diese Variable bedeutet, dass Sie problemlos einen beliebigen Prozentsatz von 0 bis 100 darstellen können, um ihn mit der Variable Fill Amount des Gesundheitsbalken-UI-Bildes abzugleichen. Eine PlayerHealth von 0,5f entspricht beispielsweise 50 % der Breite der Gesundheitsleiste.
Schritt 3: Geben Sie Variablen zwischen Skripts in Unity frei
Variablen arbeiten normalerweise innerhalb ihrer eigenen Funktionen und Skripte. Dies macht sie für andere Funktionen und Skripte unzugänglich, es sei denn, Sie unternehmen Schritte, um dem Code mitzuteilen, wo die Variablen zu finden sind, mit denen Sie arbeiten möchten.
Erstellen Sie zunächst eine neue Skriptdatei mit dem Namen Health, in der der Code untergebracht ist. Dieses Skript können Sie per Drag & Drop auf das im ersten Schritt erstellte Healthbar-UI-Element ziehen. Der folgende Code geht in die Funktion void Update() ein.
Dieser Prozess beginnt damit, das Spielobjekt zu finden, das die Variable besitzt. In diesem Fall ist es das Character_Model-Objekt:
GameObject Character_Model = GameObject.Find("Character_Model");
Als nächstes ist es an der Zeit, die Skriptkomponente zu finden, die die Variable enthält, mit der Sie arbeiten müssen.
Character_Control character_Control = Character_Model.GetComponent();
Und schließlich können Sie die spezifische Variable extrahieren, nach der Sie suchen. In diesem Fall ist es die playerHealth-Variable, die Sie Ihrem Charakter-Controller hinzugefügt haben. Weisen Sie dies einer Float-Variable innerhalb des aktuellen Skripts mit dem Namen „currentHealth“ zu.
currentHealth = character_Control.playerHealth;
Es sind nur wenige Codezeilen erforderlich, um die benötigte Variable zu erhalten, und Sie können diese Methode immer dann anwenden, wenn Sie auf die Gesundheit Ihres Spielers zugreifen müssen. Ihr Code sollte so aussehen, wenn Sie fertig sind:
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;
}
}
Schritt 4: Programmieren Sie das UI-Gesundheitsbalken-Spielobjekt
Nachdem Sie nun ein UI-Element für die Gesundheitsleiste erstellt haben und Zugriff auf die Variable für die Spielergesundheit haben, ist es an der Zeit, dass sie zusammenarbeiten. Fügen Sie zunächst eine private statische Variable hinzu, die die Bildkomponente Ihrer Gesundheitsleiste enthält:
private static Image Healthbar;
Dieser Variable können Sie dann innerhalb der Funktion void Start(), die nur einmal ausgeführt wird, die Bildkomponente zuweisen.
Healthbar = GetComponent();
Nachdem Sie nun alle Variablen eingerichtet haben, können Sie den Code aus dem vorherigen Schritt verwenden, um die Füllbreite des UI-Objekts der Zustandsleiste festzulegen. Sie müssen hier keine Umrechnung vornehmen; Sowohl die Gesundheit des Spielers als auch die Füllmenge der Gesundheitsleiste sind Float-Variablen.
Healthbar.fillAmount = currentHealth;
Wenn dieser Code vorhanden ist, füllt sich Ihre Gesundheitsleiste basierend auf der Gesundheitsvariablen, die im Character_Control-Code gefunden wird, nach oben und unten. Das ist allerdings etwas langweilig und könnte definitiv etwas Farbe vertragen.
Beginnen Sie, indem Sie eine neue Farbe hinzufügen, um die Gesundheitsleiste hellgrün zu machen, wenn der Spieler viel Gesundheit hat.
Color greenHealth = new Color(0.6f, 1, 0.6f, 1);
Als nächstes fügen Sie eine if-Anweisung hinzu, um zu prüfen, ob die Gesundheit des Spielers über 0,3f liegt, dh 30 % oder mehr. Wenn es höher als 0,3f ist, stellen Sie den Gesundheitsbalken so ein, dass er der Farbe entspricht, die Sie gerade hinzugefügt haben. Wenn es unter 0,3f liegt, färben Sie den Gesundheitsbalken rot.
if (currentHealth >= 0.3f) {
Healthbar.color = greenHealth;
} else {
Healthbar.color = Color.red;
}
Schritt 5: Testen des Codes
Wie Sie aus dem vollständigen Code unten sehen können, ist dieses Projekt recht einfach, wenn alles zusammen ist. Natürlich benötigen Sie jedoch eine Möglichkeit, Ihren Code zu testen.
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;
}
}
}
Sie können dem Character_Control-Skript eine einzelne Codezeile hinzufügen, um das Testen zu ermöglichen. Immer wenn der Spieler die W-Taste drückt, um sich vorwärts zu bewegen, wird eine kleine Menge Gesundheit entfernt. Sie können denselben Code zu jedem Skript mit Zugriff auf die playerHealth-Variable hinzufügen, um dieselben Ergebnisse zu erzielen:
playerHealth -= 0.001f;
Sie können auch erwägen, Ihrem Unity-Projekt einzigartige Assets hinzuzufügen. Im Internet finden Sie kostenlose Unity-Assets, die Ihnen die Möglichkeit geben, Ihr Projekt zu beleben, ohne Geld ausgeben zu müssen.
Erstellen von Gesundheitsbalken in Unity3D
Ihr Spiel nimmt Gestalt an, jetzt wo Sie einen Gesundheitsbalken für Ihren Charakter haben. Es gibt noch viel zu tun, aber Sie sollten jetzt über einige der wichtigsten Fähigkeiten verfügen, die Sie benötigen, um echte Fortschritte zu erzielen. Natürlich schadet es nie, mehr Anleitungen zu lesen.
Schreibe einen Kommentar