Zusammenstoß und Neustart
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 31 von 56.
Aufgabe
MittelEin Zusammenstoß beendet den Lauf, und eine Schaltfläche startet den nächsten. Behalte alles aus den vorherigen Lektionen bei. Die Canvas enthält ein ausgeblendetes GameOverPanel mit einem RestartButton mit der Beschriftung Run again, und die Szene füllt zwei neue Felder von GameManager aus: gameOverPanel und restartButton. Der Runner hat einen kinematischen Rigidbody und erhält daher Trigger-Nachrichten von den Hindernissen.
In GameManager:
- Oberhalb der Klasse deklarierst du
public enum GameState { Playing, GameOver }und gibst der Klasse ein Feldpublic GameState state, das mitPlayingbeginnt. - Füge
using UnityEngine.UI;,using UnityEngine.SceneManagement;,public GameObject gameOverPanel;undpublic Button restartButton;hinzu. - Eine öffentliche Methode
GameOver()setztstateaufGameOver, setztspeedauf 0, wodurch alle Hindernisse angehalten werden, und zeigt das Panel an. Update()tut nichts, wenn der Zustand nichtPlayingist, sodass Geschwindigkeit und Distanz anhalten.- Sorge in
Start()dafür, dassrestartButtondie gerade laufende Szene neu lädt.
In Runner: Wenn er in einen Trigger mit dem Tag Obstacle eintritt, rufst du GameManager.Instance.GameOver() auf. Solange der Zustand nicht Playing ist, bewirken die Pfeiltasten nichts.
In Spawner: Erzeuge nichts, solange der Zustand nicht Playing ist.
Drücke Play, stoße zusammen und starte erneut, dann Check.
Probier es selbst
using UnityEngine;
using TMPro;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public float speed = 10f;
public float speedUp = 0.5f;
public float maxSpeed = 20f;
public TMP_Text distanceText;
private float distance;
void Awake()
{
Instance = this;
}
void Update()
{
speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
distance += speed * Time.deltaTime;
distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
}
}
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank3Der Spielmanager
Ein Skript steuert das SpielDas SingletonSpielzuständeZum Zustand wechselnRückblick: Rundenmanager6Projekt: Endlos-Runner
Drei SpurenHindernisse voraus