Sala de escape
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 63 de 63.
Una sala de escape con una cerradura de código. Tres placas de presión grises están en el suelo, y la puerta de la pared norte solo se abre cuando el jugador las pisa en el orden correcto: placa 1, placa 2, placa 3. Nada en la sala indica cuál es cada placa. Si pisa una placa incorrecta, el código vuelve a empezar y todas las placas parpadean en rojo durante un segundo. La puerta abierta permanece así unos segundos y luego se cierra de nuevo, pero nunca encima del jugador: mientras el jugador está en el umbral, espera.
El script Player está listo: las flechas mueven al jugador, que tiene la etiqueta Player y está en la capa Player. Escribe dos scripts: Plate en cada placa y CodeLock en la cerradura.
Desafío
DifícilPlate, en cada placa (un activador). El Inspector le asigna number (1, 2 o 3) y codeLock (el script CodeLock de la cerradura).
- Cuando el jugador (con la etiqueta
Player) pisa la placa, llama acodeLock.Press(number). Cualquier otra cosa que caiga sobre ella no hace nada.
CodeLock, en la cerradura. El Inspector le asigna plates (los renderizadores de las tres placas, en orden), door (la puerta), doorway (un punto en el centro de la entrada) y openTime (4).
- Un método público
Press(int number). Cuandonumberes la placa que el código espera a continuación (1, después 2 y después 3), la registra comoPlate 2. Cuando esa era la placa 3, también registraUnlocked, reinicia el código desde la placa 1 e inicia una corrutina que abre la puerta. - Cualquier otra placa registra
Wrong plate, reinicia el código desde la placa 1 e inicia una corrutina que vuelve rojas todas las placas (Color.red) durante 1 segundo y luego las vuelve grises (Color.gray). - La corrutina de la puerta la desactiva y espera
openTimesegundos. Después sigue esperando, un fotograma cada vez, mientras haya algo en la capa Player a menos de 1 unidad dedoorway. Por último, vuelve a activar la puerta y registraDoor closed.
Pulsa Play, descubre el orden y sal; después, pulsa Check.
Pruébalo tú mismo
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)
{
// comprueba el código; haz parpadear las placas si es incorrecto; abre la puerta después de la placa 3
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Física y jugabilidad
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger