Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
UI-Lebensanzeige
Die Player-Klasse enthält Code, um die UI-Gesundheitsleiste basierend auf der aktuellen Gesundheit des Spielers zu aktualisieren. Dies wird durch drei Variablen gesteuert: UIHealthTransform
, HealthUIScale
und startingHealthUIWidth
. Im Folgenden wird erläutert, wie diese Variablen zur Verwaltung der Gesundheitsleiste verwendet werden.
Skript für die Gesundheitsleiste
// Initialization in Start method
private void Start()
{
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
// Updating health in GetAttacked method
public void GetAttacked(int damage)
{
if (isDead) return;
health -= damage;
HealthUIScale.x = health * startingHealthUIWidth / 100f;
UIHealthTransform.sizeDelta = HealthUIScale;
if (health <= 0)
{
isDead = true;
animator.SetBool("death", true);
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
deathParticle.Play();
Destroy(deathParticle.gameObject, 5);
GameManager.instance.FinishGame();
}
}
Initialisierung in der Start-Methode
In der Start
-Methode wird die anfängliche Größe der Gesundheitsleiste erfasst und gespeichert.
private void Start()
{
// ... other initializations ...
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
Gesundheitsaktualisierung in der GetAttacked-Methode
Die GetAttacked
-Methode aktualisiert die UI der Gesundheitsleiste, sobald der Spieler Schaden erleidet.
Gesundheitsreduktion:
health -= damage;
Die Gesundheit des Spielers wird um den erlittenen Schaden verringert.
Berechnung der Skalierung der Gesundheitsleiste:
HealthUIScale.x = health * startingHealthUIWidth / 100f;
Erklärung
Diese Codezeile aktualisiert die Breite der Gesundheitsleiste basierend auf der aktuellen Gesundheit des Spielers. So funktioniert es:
Gesundheit:
health
ist ein Float-Wert, der die aktuelle Gesundheit des Spielers darstellt. Angenommen, dieser Wert liegt zwischen 0 und 100.
Anfängliche Breite der Gesundheitsleiste:
startingHealthUIWidth
ist ein Float-Wert, der die ursprüngliche Breite der Gesundheitsleiste bei voller Gesundheit angibt.
Skalierung der Breite der Gesundheitsleiste: Das Ziel ist es, die Breite der Gesundheitsleiste proportional zur abnehmenden Gesundheit des Spielers zu verringern; Dazu wird berechnet, wie viel Prozent der Gesundheit noch verbleiben, und dieser Prozentsatz wird auf die ursprüngliche Breite der Gesundheitsleiste angewendet.
Schritt-für-Schritt-Berechnung
Prozentsatz der verbleibenden Gesundheit:
Teilen Sie die aktuelle Gesundheit durch 100, um einen Wert zwischen 0 und 1 zu erhalten, der den Prozentsatz der verbleibenden Gesundheit des Spielers darstellt. Wenn die Gesundheit des Spielers beispielsweise 75 beträgt, ergibt health / 100f
den Wert 0.75
.
Diese Berechnung wandelt den Gesundheitswert in ein prozentuales Format um, das für die UI-Darstellung geeignet ist.
Prozentsatz auf die Anfangsbreite anwenden:
Multiplizieren Sie den Prozentsatz der verbleibenden Gesundheit mit der Anfangsbreite der Gesundheitsleiste. Wenn beispielsweise die startingHealthUIWidth
200 beträgt (volle Breite) und die Gesundheit des Spielers bei 75 % liegt, beträgt die neue Breite der Gesundheitsleiste 150 Einheiten (0.75 * 200 = 150
).
Durch diese Berechnung stellt die Breite der Gesundheitsleiste dynamisch und präzise die aktuelle Gesundheit des Spielers dar und bietet dem Spieler eine klare visuelle Rückmeldung.
Aktualisierung der Gesundheitsleisten-UI:
UIHealthTransform.sizeDelta = HealthUIScale;
Die Größe des RectTransform
, das die Gesundheitsleiste darstellt, wird aktualisiert.
Überprüfung auf Spielertod:
if (health <= 0)
{
isDead = true;
animator.SetBool("death", true);
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
deathParticle.Play();
Destroy(deathParticle.gameObject, 5);
GameManager.instance.FinishGame();
}
Wenn die Gesundheit auf 0 oder darunter fällt, wird der Spieler als tot markiert und die Todesanimation sowie Partikeleffekte werden ausgelöst.
Zusammenfassung der Funktionalität der Gesundheitsanzeige
Initialisierung: Die anfängliche Größe der Gesundheitsanzeige wird zu Beginn erfasst.
Aktualisierung der Gesundheitsanzeige: Wenn der Spieler Schaden nimmt, wird der Gesundheitswert verringert und die Breite der Anzeige entsprechend neu berechnet und angepasst.
Spielertod: Erreicht die Gesundheit den Wert Null, wird der Spieler als tot markiert, die Todesanimation und Partikeleffekte werden ausgelöst und das Spiel beendet.
Danke für Ihr Feedback!