Menu
CoddyTech

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.

challenge icon

Desafío

Difícil

Plate, 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 a codeLock.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). Cuando number es la placa que el código espera a continuación (1, después 2 y después 3), la registra como Plate 2. Cuando esa era la placa 3, también registra Unlocked, 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 openTime segundos. Después sigue esperando, un fotograma cada vez, mientras haya algo en la capa Player a menos de 1 unidad de doorway. Por último, vuelve a activar la puerta y registra Door 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
    }
}
quiz iconPonte a prueba

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