Menu
CoddyTech

脱出ゲーム

CoddyのUnityジャーニー「物理演算とゲームプレイ」セクションの一部。レッスン 63/63。

コードロックのある脱出ルーム。床には3枚の灰色の感圧プレートがあり、北側の壁のドアは、プレイヤーが正しい順序、つまりプレート1、プレート2、プレート3の順に踏んだときだけ開きます。部屋の中には、どのプレートがどれなのかを示すものはありません。間違ったプレートを踏むと、コードが最初からやり直しになり、すべてのプレートが1秒間赤く点滅します。開いたドアは数秒間開いたままになり、その後再び閉じますが、プレイヤーの上では決して閉じません。プレイヤーが戸口に立っている間、ドアは待機します。

Playerスクリプトは準備済みです。矢印キーでプレイヤーを移動できます。プレイヤーにはPlayerタグが設定され、Playerレイヤーに配置されています。2つのスクリプトを作成してください。各プレートにはPlate、LockにはCodeLockを設定します。

challenge icon

チャレンジ

難しい

各プレート(トリガー)に Plate を付けます。Inspector で number(1、2、または3)と codeLock(Lock の CodeLock スクリプト)を設定します。

  • プレイヤー(Player タグ付き)がプレートに乗ったら、codeLock.Press(number) を呼び出します。それ以外のものが乗っても何も起こりません。

Lock に CodeLock を付けます。Inspector で plates(順番どおりの3つのプレートの Renderer)、door(Door)、doorway(出入り口の中央の点)、openTime(4)を設定します。

  • public メソッド Press(int number) を作成します。number が次に期待されるプレート(1、次に2、次に3)であれば、Plate 2 のようにログに出力します。それがプレート3だった場合は、さらに Unlocked をログに出力し、プレート1からコードをやり直して、ドアを開くコルーチンを開始します。
  • それ以外のプレートの場合は、Wrong plate をログに出力し、プレート1からコードをやり直して、すべてのプレートを1秒間赤(Color.red)にし、その後灰色(Color.gray)に戻すコルーチンを開始します。
  • ドアのコルーチンはドアを非アクティブにして、openTime 秒待ちます。その後、Player レイヤー上のものが doorway から1単位以内にある間、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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

物理演算とゲームプレイのすべてのレッスン