Menu
CoddyTech

Zusammenstoß beendet den Lauf

Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 31 von 60.

challenge icon

Aufgabe

Mittel

Ein Zusammenstoß sollte den Lauf beenden.

  1. Deklariere über GameManager public enum GameState { Playing, GameOver }; füge darin public GameState state = GameState.Playing; hinzu.
  2. public void GameOver() setzt state auf GameState.GameOver und speed auf 0 und zeigt gameOverPanel an.
  3. Runner ruft bei einem Trigger mit dem Tag Obstacle GameManager.Instance.GameOver() auf. GameManager, Runner und Spawner beginnen Update() mit einem return, wenn der Zustand nicht Playing ist.

Drücke „Spielen“ und verursache einen Zusammenstoß: Alles stoppt. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
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;
    public GameObject gameOverPanel;
    public Button restartButton;
    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

Übe selbstständig: Unity-Playground