Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Zufällig Generierte Hindernisse.
Die Obstacle
-Klasse verwaltet die Hindernisse im Spiel und sorgt dafür, dass sie sich neu positionieren, sobald sie den Bildschirm verlassen, um ein kontinuierliches Spielerlebnis zu gewährleisten.
Methoden
Start-Methode
private void Start()
{
lastObject = startingLastObject;
player = FindAnyObjectByType<PlayerMVT>().transform;
}
Zweck: Initialisiert das letzte Hindernis und findet das Transform des Spielers.
Funktionsweise:
lastObject = startingLastObject;
: Setzt das lastObject
auf das im Inspector angegebene Anfangshindernis;
player = FindAnyObjectByType<PlayerMVT>().transform;
: Findet das Transform des Spielers mit der Methode FindAnyObjectByType
.
OnBecameInvisible-Methode
private void OnBecameInvisible()
{
if (player == null) return;
if (transform.position.x >= player.position.x) return;
if (transform == lastObject) return;
Vector2 position = transform.position;
float random = Random.Range(0, 100);
if (random <= 50)
{
position.y = Random.Range(-2, 1);
}
else
{
position.y = Random.Range(15, 18);
}
position.x = lastObject.position.x + Random.Range(6f, 10f);
transform.position = position;
lastObject = transform;
}
Zweck: Positioniert das Hindernis neu, wenn es den Bildschirm verlässt und bestimmte Bedingungen erfüllt.
Funktionsweise:
Das Skript stellt sicher, dass der Spieler existiert, bevor es fortfährt (if (player == null) return;
), prüft, ob das Hindernis hinter dem Spieler positioniert ist (if (transform.position.x >= player.position.x) return;
) und verhindert eine wiederholte Neupositionierung desselben Hindernisses (if (transform == lastObject) return;
).
Es ermittelt die aktuelle Position des Hindernisses (Vector2 position = transform.position;
), generiert eine Zufallszahl (float random = Random.Range(0, 100);
) und passt die y-Position des Hindernisses basierend auf der Zufallszahl an.
Anschließend wird die x-Position relativ zum letzten Hindernis aktualisiert (position.x = lastObject.position.x + Random.Range(6f, 10f);
) und lastObject
auf das aktuelle Hindernis gesetzt (lastObject = transform;
).
Zusammenfassung
- Initialisierung: Setzt das anfängliche letzte Hindernis und sucht den Spieler;
- Neupositionierung: Wenn ein Hindernis den Bildschirm verlässt und bestimmte Bedingungen erfüllt, wird es in zufälligem Abstand vor dem letzten Hindernis mit zufälliger Höhe neu positioniert;
- Bedingungen: Stellt sicher, dass Hindernisse nur neu positioniert werden, wenn sie sich hinter dem Spieler befinden und nicht wiederholt dasselbe Hindernis betroffen ist.
Diese Konfiguration ermöglicht einen kontinuierlichen Fluss von Hindernissen im Spiel und sorgt für Herausforderung und Abwechslung für die Spielenden.
Danke für Ihr Feedback!