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.
Sfida
DifficilePlate, 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, chiamacodeLock.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). Quandonumberè quello della piastra che il codice si aspetta, nell'ordine (1, poi 2, poi 3), registralo, comePlate 2. Quando la piastra era la numero 3, registra ancheUnlocked, 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
openTimesecondi. Poi continua ad attendere, un frame alla volta, finché qualsiasi cosa sul layer Player si trova entro 1 unità dadoorway. Infine, riattiva la porta e registraDoor 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
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere