Menu
CoddyTech

Überlebensnacht

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

Ein Überlebender steht auf einem dunklen Feld, und die ganze Nacht über kommen Fledermäuse auf ihn zu, alle paar Sekunden eine neue aus einer der vier Ecken des Feldes. Jede Fledermaus fliegt geradewegs auf den Überlebenden zu, und die erste, die ihn erreicht, beendet die Nacht. Eine Uhr oben zählt die Sekunden bis zum Morgengrauen: Halte bis dahin durch und du gewinnst. Eine Pause-Schaltfläche friert alles ein, und wenn die Nacht endet, beginnt „Erneut spielen“ eine neue Nacht.

Das Skript Player, das den Überlebenden mit der Aktion Move bewegt, ist geschrieben. Schreibe GameManager und Bat.

challenge icon

Aufgabe

Schwer

Der Inspector stellt GameManager nightLength (15), spawnEvery (2), batPrefab, spawnPoints (die vier Ecken), dawnText, pauseButton, pausePanel, endPanel, endText und restartButton bereit.

  • Es ist ein Singleton (public static GameManager Instance) und enthält ein verschachteltes public enum State mit Playing, Paused, Won und Lost sowie ein public State state. Die Nacht beginnt im Zustand Playing.
  • Während Playing läuft die verbleibende Zeit von nightLength herunter und wird aufgerundet angezeigt, etwa als Dawn in 12; alle spawnEvery Sekunden erscheint eine Fledermaus an einem zufällig ausgewählten Punkt aus spawnPoints. Wenn keine Zeit mehr übrig ist, ist die Nacht gewonnen.
  • pauseButton schaltet zwischen Playing und Paused um. Paused hält die Spielzeit an (Time.timeScale 0) und zeigt pausePanel an; bei der Rückkehr zu Playing läuft die Zeit wieder und das Panel wird ausgeblendet. Im Zustand Won oder Lost bewirkt die Taste nichts.
  • Ein öffentliches Lose() versetzt eine Nacht im Zustand Playing in den Zustand Lost.
  • Won und Lost halten die Spielzeit an und zeigen endPanel mit endText an, dessen Text You survived the night! oder The bats got you lautet.
  • restartButton startet eine neue Nacht, indem die Szene erneut geladen wird.

Der Inspector stellt Bat speed (2) und reach (1) bereit. Während die Nacht im Zustand Playing ist, fliegt eine Fledermaus mit speed auf den Spieler (mit dem Tag Player) zu und behält dabei ihre eigene Höhe bei. Sobald sie sich auf der Bodenebene innerhalb von reach zum Spieler befindet, ruft sie Lose() auf.

Drücke Play und versuche, bis zum Morgengrauen durchzuhalten, und klicke dann auf Check.

Probier es selbst

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class GameManager : MonoBehaviour
{
    public float nightLength = 15f;
    public float spawnEvery = 2f;
    public GameObject batPrefab;
    public Transform[] spawnPoints;
    public TMP_Text dawnText;
    public Button pauseButton;
    public GameObject pausePanel;
    public GameObject endPanel;
    public TMP_Text endText;
    public Button restartButton;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Echte Spiele entwickeln