Menu
CoddyTech

Sala de Fuga

Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 63 de 63.

Uma sala de fuga com uma fechadura de código. Três placas de pressão cinzas ficam no chão, e a porta na parede norte só se abre quando o jogador pisa nelas na ordem correta: placa 1, placa 2, placa 3. Nada na sala indica qual placa é qual. Se pisar na placa errada, a sequência recomeça e todas as placas piscam em vermelho por um segundo. A porta aberta permanece assim por alguns segundos e depois se fecha novamente, mas nunca com o jogador no caminho: enquanto o jogador estiver na entrada, ela espera.

O script Player está pronto: as setas movem o jogador, que tem a tag Player e está na camada Player. Escreva dois scripts: Plate em cada placa e CodeLock na Lock.

challenge icon

Desafio

Difícil

Plate, em cada placa (um gatilho). No Inspector, atribua a ela number (1, 2 ou 3) e codeLock (o script CodeLock da trava).

  • Quando o jogador (marcado com a tag Player) pisar na placa, chame codeLock.Press(number). Qualquer outra coisa que cair sobre ela não fará nada.

CodeLock, na trava. No Inspector, atribua a ele plates (os Renderers das três placas, em ordem), door (a porta), doorway (um ponto no meio da entrada) e openTime (4).

  • Um método público Press(int number). Quando number for o número da placa que o código espera em seguida (1, depois 2 e depois 3), registre esse número, como em Plate 2. Quando essa for a placa 3, registre também Unlocked, recomece o código pela placa 1 e inicie uma coroutine que abre a porta.
  • Qualquer outra placa registra Wrong plate, recomeça o código pela placa 1 e inicia uma coroutine que deixa todas as placas vermelhas (Color.red) por 1 segundo e, em seguida, cinzas (Color.gray) novamente.
  • A coroutine da porta desativa a porta e espera openTime segundos. Depois, continua esperando, um quadro por vez, enquanto qualquer coisa na camada Player estiver a menos de 1 unidade de doorway. Por fim, ativa a porta novamente e registra Door closed.

Pressione Play, descubra a ordem e saia; depois, clique em Check.

Experimente você mesmo

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)
    {
        // verifique o código; faça as placas piscarem se estiver errado; abra a porta após a placa 3
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Física e jogabilidade