Menu
CoddyTech

Escape room

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 63 di 63.

Una stanza della fuga con una serratura a codice. Tre piastre a pressione grigie si trovano sul pavimento e la porta sulla parete nord si apre solo quando il giocatore le calpesta nell’ordine giusto: piastra 1, piastra 2, piastra 3. Nella stanza non c’è nulla che indichi quale sia ciascuna piastra. Una piastra sbagliata riavvia il codice e fa lampeggiare in rosso tutte le piastre per un secondo. La porta aperta resta aperta per alcuni secondi, poi si richiude, ma mai sul giocatore: mentre il giocatore è fermo sulla soglia, la porta aspetta.

Lo script Player è pronto: le frecce muovono il giocatore, a cui è assegnato il tag Player e che si trova sul layer Player. Scrivi due script: Plate su ciascuna piastra e CodeLock sulla serratura.

challenge icon

Sfida

Difficile

Plate, su ogni piastra (un trigger). Nell'Inspector assegna number (1, 2 o 3) e codeLock (lo script CodeLock della serratura).

  • Quando il giocatore (con tag Player) sale sulla piastra, chiama codeLock.Press(number). Qualsiasi altra cosa vi finisca sopra non fa nulla.

CodeLock, sulla serratura. Nell'Inspector assegnagli plates (i Renderer delle tre piastre, in ordine), door (la porta), doorway (un punto al centro del vano della porta) e openTime (4).

  • Un metodo pubblico Press(int number). Quando number è quello della piastra che il codice si aspetta, nell'ordine (1, poi 2, poi 3), registralo, come Plate 2. Quando la piastra era la numero 3, registra anche Unlocked, ricomincia il codice dalla piastra 1 e avvia una coroutine che apre la porta.
  • Qualsiasi altra piastra registra Wrong plate, ricomincia il codice dalla piastra 1 e avvia una coroutine che rende rosse tutte le piastre (Color.red) per 1 secondo, poi le riporta grigie (Color.gray).
  • La coroutine della porta la disattiva e attende openTime secondi. Poi continua ad attendere, un frame alla volta, finché qualsiasi cosa sul layer Player si trova entro 1 unità da doorway. Infine, riattiva la porta e registra Door closed.

Premi Play, trova l'ordine e esci, poi premi Check.

Provalo tu

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)
    {
        // controlla il codice; fai lampeggiare le piastre se è errato; apri la porta dopo la piastra 3
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay