State Machine Behaviour
アニメーションのレイヤー

サブステートマシン

キャラクターに複数のステップからなる複雑なアクションを持たせたいケースが良くあります。全体のアクションをひとつのステートでハンドリングするかわりに、ステップ別に分けて、それぞれにひとつのステートを使用すべきです。例えば、キャラクターに、しゃがんで狙いを定め、撃って、再び立ち上がらせる、“Trickshot” というアクションを持たせたいとします。

Trickshot アクションにおけるステートの順序
“Trickshot” アクションにおけるステートの順序

制御上便利な場面もありますが、短所としては、ステートマシンが大きくなり、複雑なアクションがさらに追加されると扱いが難しくなります。エディターの空いたスペースで、ステートのグループを視覚的に分けることでシンプルにすることができます。しかし、Mecanim はさらに一歩進んで、ステートマシン図でステートのグループをひとつのアイテムに折りたたむことができるようにしています。これらの折りたたまれたグループは サブステートマシン と呼ばれます。

サブステートマシンを作成するには Animator Controller ウィンドウの空いたところで右クリックして、コンテキストメニューから Create Sub-State Machine を選びます。サブステートマシンはエディター上で引き伸ばされた六角形のマークによって、他の通常のステートとは区別して表示されます。

サブステートマシン
サブステートマシン

六角形のマークをダブルクリックすると、エディターがクリアされてサブステートマシンがあたかも別のステートマシンのように編集できるようになります。ウィンドウの上にあるバーは “BreadCrumb Trail” (軌跡) で、どのサブステートマシンが現在編集されているか示します(そして、サブステートマシンの中に別のサブステートマシンを作成するなどネストができることに注意してください)。Trail 上でアイテムをクリックすることでエディターが特定のサブステートマシンにフォーカスします。

パンくずリスト
パンくずリスト

サブステートマシンとその外部との遷移

前述のとおり、サブステートマシンは単にエディターでステートのグループを折りたたむ方法なので、サブステートマシンへ遷移するときは、その中のどのステートに接続したいかを選択する必要があります。

Trickshot サブステートマシンの中からターゲットとするステートを選択
“Trickshot” サブステートマシンの中からターゲットとするステートを選択

サブステートマシンに“Up”で名前が始まる追加のステートができたことに気づきます。

Up ステート
“Up” ステート

Up ステートは “サブステートマシンの外部” を表し、ビューで表示されるサブステートマシンの上位にあるステートマシンです。サブステートマシンのひとつのステートから Up ステートへの遷移を追加すると、上位にあるステートマシンの中から接続させたいステートを選ぶプロンプトが表示されます。

上位のステートマシンのステートに接続する
上位のステートマシンのステートに接続する
State Machine Behaviour
アニメーションのレイヤー