Menu
CoddyTech

Pokój zagadek

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 63 z 63.

Pokój zagadek z zamkiem szyfrowym. Na podłodze leżą trzy szare płyty naciskowe, a drzwi w północnej ścianie otwierają się tylko wtedy, gdy gracz stanie na nich we właściwej kolejności: płyta 1, płyta 2, płyta 3. W pokoju nie ma żadnej wskazówki, która płyta jest którą. Nadepnięcie na niewłaściwą płytę rozpoczyna kod od nowa i sprawia, że każda płyta miga na czerwono przez sekundę. Otwarte drzwi pozostają otwarte przez kilka sekund, a potem znów się zamykają, ale nigdy na graczu: gdy gracz stoi w przejściu, drzwi czekają.

Skrypt Player jest gotowy: strzałki poruszają graczem, który ma tag Player i znajduje się na warstwie Player. Napisz dwa skrypty: Plate dla każdej płyty i CodeLock dla zamka.

challenge icon

Wyzwanie

Trudny

Plate, na każdej płycie (wyzwalaczu). W Inspectorze przypisz jej number (1, 2 lub 3) i codeLock (skrypt CodeLock zamka).

  • Gdy gracz (z tagiem Player) wejdzie na płytę, wywołaj codeLock.Press(number). Wszystko inne, co na nią wejdzie, nie wywoła żadnego działania.

CodeLock, na zamku. W Inspectorze przypisz mu plates (Renderery trzech płyt, w odpowiedniej kolejności), door (drzwi), doorway (punkt na środku przejścia) oraz openTime (4).

  • Metoda publiczna Press(int number). Gdy number wskazuje płytę, której kod oczekuje w następnej kolejności (1, potem 2, a następnie 3), wyświetl jej numer, np. Plate 2. Gdy była to płyta 3, wyświetl też Unlocked, rozpocznij kod od płyty 1 i uruchom korutynę otwierającą drzwi.
  • Każda inna płyta powoduje wyświetlenie Wrong plate, rozpoczęcie kodu od płyty 1 oraz uruchomienie korutyny, która zmienia kolor wszystkich płyt na czerwony (Color.red) na 1 sekundę, a następnie z powrotem na szary (Color.gray).
  • Korutyna drzwi dezaktywuje je i czeka openTime sekund. Następnie nadal czeka, klatka po klatce, dopóki cokolwiek na warstwie Player znajduje się w odległości do 1 jednostki od doorway. Na koniec ponownie aktywuje drzwi i wyświetla Door closed.

Naciśnij Play, znajdź właściwą kolejność i wydostań się, a następnie naciśnij Check.

Spróbuj swoich sił

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)
    {
        // sprawdź kod; mignij płytkami przy błędnym kodzie; otwórz drzwi po płytce 3
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka