指揮官の命令で槍足軽達を一斉に制御できるように、槍足軽をステートマシンにします。
まず、槍足軽のステートを列挙型で定義します。とりあえず今は待機状態と前進状態のみにします。
[speaman.cs]
public enum YariState { IDLE, WALK } private YariState yariState = YariState.idle; private float speed = 1.5f;
enumはenumクラスで文字列を列挙した後、変数の宣言が必要です。待機状態のIDLEで初期化しておきます。
次に、ステートを変更するメソッドとそれぞれのステートの時の槍足軽の挙動をまとめたメソッドを作ります。
IDLEステートの時は何もせず、WALKステートの時は前に進みます。
// ステートの変更 public void SetState(YariState state) { yariState = state; } // 各ステート時の処理 public void Idle() {} public void Walk() { transform.position += transform.forward * Time.deltaTime * speed; }
Updateメソッドの最初に、現在のステートをチェックするようにします。そして、そのステートの時に実行するメソッドを呼び出します。
void Update () { if (yariState == YariState.IDLE) { Idle(); } else if (yariState == YariState.WALK) { Walk(); } ...
これで槍足軽がステートマシンになりました!