振り返り:ドアの状態
CoddyのUnityジャーニー「Unityのゲームアーキテクチャ」セクションの一部。レッスン 41/64。
この章では、各状態に専用のクラスを用意し、1つのStateMachineでそれらを実行し、それぞれの状態が独自に抜け出す方法を決められるようにしました。ドアの例では、この3つを組み合わせます。
チャレンジ
中級DoorStates.csで城のドアの5つの状態を実装します。ヘルパーはDoor.csにあります。
- ロック中:
door.PressedNear()はLockedをログに出力します。Door.Unlock()は、ロックされたドアの状態をclosedに変更します。 - 閉鎖中:
PressedNear()でopeningに変わります。開放中:door.SlideTo(door.openY)がtrueになったら、openに変わります。 - 開放中:
door.stayOpen秒後にclosingに変わります。 - 閉鎖中:
PressedNear()で再び開きます。そうでなければ、SlideTo(door.closedY)になったらclosedに変わります。
「プレイ」を押し、鍵を取ってドアを開けます。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
public class LockedState : IState
{
private Door door;
public LockedState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class ClosedState : IState
{
private Door door;
public ClosedState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class OpeningState : IState
{
private Door door;
public OpeningState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class OpenState : IState
{
private Door door;
public OpenState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
public class ClosingState : IState
{
private Door door;
public ClosingState(Door door)
{
this.door = door;
}
public void Enter()
{
}
public void Tick()
{
}
public void Exit()
{
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Unityのゲームアーキテクチャのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド