エレベータを制御するスクリプト作成にあたり、ステートマシンの実装方法を調査した。Unityにおける実装は主に下記の3つ。
1.は Animationコンポーネントの利用を主体としたものであることと、ステート毎にクラスが必要なため難しくなりそうなので不可。2.はエディタなどの機能も付随し便利そうであるが、有料なことと学習負荷が高そうなため不可。
このため 3.の方法で実装することとした。いくつかのサイトの情報を参考に、ステートの開始(Start()相当)とUpdate()にステートの分岐を作り、ステート遷移させていく。
エレベータのステート自体はそう複雑なものではない。
条件による単純な遷移に加えて、コライダーによるトリガーやタイマーによる遷移の実装が必要だったが、思いのほか簡単に実装できた。”CloseIDLE”からのステート移動が3つ(Open,Move,Exit)あり、ここの遷移条件としてサブステートが必要かと思ったが、ステート内の条件判定で対応可能だった。