Menu
CoddyTech

방 탈출

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 63번째.

코드 잠금장치가 있는 방 탈출 게임입니다. 바닥에는 회색 압력판 세 개가 놓여 있고, 북쪽 벽의 문은 플레이어가 올바른 순서로 밟을 때만 열립니다. 압력판 1, 압력판 2, 압력판 3 순서입니다. 방 안에는 어느 압력판이 몇 번인지 알려주는 것이 없습니다. 잘못된 압력판을 밟으면 코드가 처음부터 다시 시작되고, 모든 압력판이 1초 동안 빨간색으로 깜빡입니다. 열린 문은 몇 초 동안 열린 채로 있다가 다시 닫히지만, 플레이어 위로 닫히지는 않습니다. 플레이어가 출입구에 서 있는 동안 문은 기다립니다.

Player 스크립트는 준비되어 있습니다. 화살표 키로 플레이어를 움직이며, 플레이어에는 Player 태그가 지정되어 있고 Player 레이어에 배치되어 있습니다. 스크립트 두 개를 작성하세요. 각 압력판에는 Plate를, Lock에는 CodeLock을 작성하세요.

challenge icon

챌린지

어려움

각 플레이트(트리거)에 Plate를 배치합니다. 인스펙터에서 number(1, 2 또는 3)와 codeLock(Lock의 CodeLock 스크립트)을 지정합니다.

  • 플레이어(Player 태그)가 플레이트 위에 올라서면 codeLock.Press(number)를 호출합니다. 그 밖의 오브젝트가 플레이트에 닿아도 아무 일도 일어나지 않습니다.

Lock에 CodeLock을 배치합니다. 인스펙터에서 plates(순서대로 세 플레이트의 Renderer), door(Door), doorway(출입구 중앙의 한 지점), openTime(4)을 지정합니다.

  • 공개 메서드 Press(int number)를 만듭니다. number가 코드에서 다음으로 예상하는 플레이트(1, 그다음 2, 그다음 3)라면 해당 번호를 Plate 2와 같이 로그에 출력합니다. 3번 플레이트였다면 Unlocked도 로그에 출력하고, 코드를 플레이트 1부터 다시 시작한 다음 문을 여는 코루틴을 시작합니다.
  • 다른 플레이트를 누르면 Wrong plate를 로그에 출력하고, 코드를 플레이트 1부터 다시 시작한 다음 모든 플레이트를 1초 동안 빨간색(Color.red)으로 바꿨다가 다시 회색(Color.gray)으로 바꾸는 코루틴을 시작합니다.
  • 문 코루틴은 문을 비활성화하고 openTime초 동안 기다립니다. 그런 다음 Player 레이어에 있는 오브젝트가 doorway에서 1단위 이내에 있는 동안 프레임 단위로 계속 기다립니다. 마지막으로 문을 다시 활성화하고 Door closed를 로그에 출력합니다.

Play를 눌러 순서를 찾아 탈출한 다음 Check를 누르세요.

직접 해보기

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)
    {
        // 코드를 확인하고, 틀린 번호를 누르면 plates를 깜빡이게 하며, 3번 plate를 누른 후 door를 연다
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

물리와 게임플레이의 모든 레슨