Todeszonen
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 18 von 63.
Eine Todeszone ist ein Trigger über einem Bereich, den der Spieler nicht erreichen darf: Lava, Stacheln oder der leere Raum unter dem Level. Betritt der Spieler sie, wird er zu einem Spawnpunkt zurückgeschickt. Hier übernimmt das Skript der Lava selbst diese Aufgabe; der Spawnpunkt befindet sich in einem Transform-Feld, das im Inspector festgelegt wird:
public Transform spawnPoint;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.transform.position = spawnPoint.position;
other.attachedRigidbody.linearVelocity = Vector3.zero;
}
}other.attachedRigidbody ist das Rigidbody, zu dem der eintretende Collider gehört. Durch das Festlegen von transform.position wird der Spieler teleportiert, was für einen Respawn nötig ist. Ein Rigidbody behält seine Geschwindigkeit beim Sprung jedoch bei: Ein Spieler, der mit 10 Einheiten pro Sekunde hineingefallen ist, kommt am Spawnpunkt immer noch mit 10 Einheiten pro Sekunde fallend an, und wer in die Lava gerannt ist, rennt weiter und landet direkt wieder darin. Wenn du linearVelocity auf Vector3.zero setzt, kommt der Spieler zum Stillstand. Die Tag-Prüfung sorgt dafür, dass alles andere, was in die Lava fällt, an Ort und Stelle bleibt.
Aufgabe
EinfachDer Spieler überquert eine schmale Brücke über dem Abgrund und wird dabei durch die Pfeiltasten mit Kräften geschoben; dieser Teil ist bereits geschrieben. Ein Trigger mit dem Tag KillZone füllt den Bereich darunter, und eine Flagge mit dem Tag Checkpoint, ebenfalls ein Trigger, steht auf halber Strecke der Brücke. Ergänze im Skript des Spielers Respawn-Punkte:
- Beim Start des Spiels ist der Respawn-Punkt dort, wo der Spieler steht.
- Wenn der Spieler einen
Checkpointberührt, wird seine Position in diesem Moment zum neuen Respawn-Punkt. - Betritt der Spieler die
KillZone, wird er zum Respawn-Punkt zurückgebracht und bleibt stehen.
Drücke Play und geh von der Brücke, dann Check.
Probier es selbst
using UnityEngine;
public class Player : MonoBehaviour
{
public float force = 12f;
Rigidbody body;
Vector3 input;
// respawn: wo der Spieler wieder erscheint
void Start()
{
body = GetComponent<Rigidbody>();
}
void Update()
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
}
void FixedUpdate()
{
body.AddForce(input * force);
}
// Checkpoint: merke dir, wo der Spieler ist. KillZone: zurück an diese Stelle, ohne sich zu bewegen.
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand