槍足軽をステートマシンにする

指揮官の命令で槍足軽達を一斉に制御できるように、槍足軽をステートマシンにします。

まず、槍足軽のステートを列挙型で定義します。とりあえず今は待機状態と前進状態のみにします。

[speaman.cs]

public enum YariState {
    IDLE,
    WALK
}
private YariState yariState = YariState.idle;
private float speed = 1.5f;

enumenumクラスで文字列を列挙した後、変数の宣言が必要です。待機状態の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();
    }
    ...

これで槍足軽がステートマシンになりました!