Menu
CoddyTech

Escape Room

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 63 von 63.

Ein Escape Room mit einem Codeschloss. Drei graue Druckplatten liegen auf dem Boden, und die Tür in der Nordwand öffnet sich nur, wenn der Spieler in der richtigen Reihenfolge auf sie tritt: Platte 1, Platte 2, Platte 3. Nichts im Raum verrät, welche Platte welche ist. Eine falsche Platte setzt den Code zurück und lässt jede Platte eine Sekunde lang rot aufblinken. Die offene Tür bleibt einige Sekunden lang offen und schließt sich dann wieder, aber niemals, während sich der Spieler darin befindet: Solange der Spieler in der Türöffnung steht, wartet sie.

Das Skript Player ist fertig: Die Pfeiltasten bewegen den Spieler, der mit Player markiert ist und sich auf dem Player-Layer befindet. Schreibe zwei Skripte: Plate für jede Platte und CodeLock für das Schloss.

challenge icon

Aufgabe

Schwer

Plate auf jeder Platte (einem Trigger). Weise ihr im Inspector number (1, 2 oder 3) und codeLock (das CodeLock-Skript des Locks) zu.

  • Wenn der Spieler (mit dem Tag Player) auf die Platte tritt, rufe codeLock.Press(number) auf. Alles andere, was darauf landet, bewirkt nichts.

CodeLock auf dem Lock. Weise ihm im Inspector plates (die Renderer der drei Platten, der Reihe nach), door (die Door), doorway (einen Punkt in der Mitte des Türdurchgangs) und openTime (4) zu.

  • Eine öffentliche Methode Press(int number). Wenn number der Platte entspricht, die der Code als Nächstes erwartet (1, dann 2, dann 3), gib sie aus, zum Beispiel als Plate 2. Wenn es sich dabei um Platte 3 handelte, gib außerdem Unlocked aus, beginne den Code wieder bei Platte 1 und starte eine Coroutine, die die Tür öffnet.
  • Bei jeder anderen Platte wird Wrong plate ausgegeben, der Code wieder bei Platte 1 begonnen und eine Coroutine gestartet, die jede Platte 1 Sekunde lang rot (Color.red) färbt und sie dann wieder grau (Color.gray) färbt.
  • Die Tür-Coroutine deaktiviert die Tür und wartet openTime Sekunden. Anschließend wartet sie weiterhin frameweise, solange sich etwas auf dem Player-Layer innerhalb von 1 Einheit von doorway befindet. Zuletzt aktiviert sie die Tür wieder und gibt Door closed aus.

Drücke Play, finde die Reihenfolge und komm hinaus, dann klicke auf Check.

Probier es selbst

using System.Collections;
using UnityEngine;

public class CodeLock : MonoBehaviour
{
    [SerializeField] private Renderer[] plates;
    [SerializeField] private GameObject door;
    [SerializeField] private Transform doorway;
    [SerializeField] private float openTime = 4f;

    public void Press(int number)
    {
        // Prüfe den Code; lasse die Platten bei einer falschen Eingabe aufblinken; öffne die Tür nach Platte 3
    }
}
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 Physik und Gameplay