振り返り:ドアの状態
CoddyのUnityジャーニー「Unityにおけるゲームアーキテクチャ」セクションの一部。レッスン 32/50。
チャレンジ
中級鍵のかかった城の扉。矢印キーでPlayerを移動させ、金色のKeyを拾うと(両方準備完了)、door.Unlock()が呼び出されます。IStateとこの章のStateMachineはプロジェクトに含まれています。Door.csには、Inspectorの値(closedY 1.5、openY 4、speed 2、stayOpen 2、reach 2.5)、machineフィールド、PlayerNear()があります。扉に5つの状態を持たせます。DoorStates.cs内のクラスとして、LockedState、ClosedState、OpeningState、OpenState、ClosingStateという名前にします。
- 扉はLocked状態で始まります。近くでスペースキーを押す(
PlayerNear())と、Lockedをログに出力するだけです。Unlock()はロックされた扉をClosed状態にし、それ以外の状態では何もしません。 - Closed:扉の近くでスペースキーを押すと、開き始めます。
- Opening:扉は
speedの速度で上昇し、y座標がopenYになるとOpen状態になります。 - Open:
stayOpen秒経過すると、閉まり始めます。 - Closing:扉は
speedの速度で下降し、y座標がclosedYになるとClosed状態になります。下降中に近くでスペースキーを押すと、その位置から再び開きます。
Playを押して、ロックされた扉を試し、鍵を取りに行き、扉を開けて通り抜けてから、Checkを押してください。
自分で試してみよう
using UnityEngine;
// LockedState、ClosedState、OpeningState、OpenState、ClosingState