今回はUnityのアニメーターコントローラのサブステートマシン(Sub-State Machine)を使ってみたいと思います。
アニメーターコントローラでアニメーションの制御を細かくしていくと、段々と上のように複雑な状態遷移が作成されていきます。
さらに状態を増やしていくとどこがどう繋がっているのかがわかりづらくなってしまいます。
そこで上の画像のようにDamageを受けた時の状態は同じ遷移(条件は違いますが)になっているので、これらをまとめてしまいましょう。
アニメーターコントローラでサブステートマシンを作成する
まずはアニメーターウインドウで
右クリック→Create Sub-State Machineを選択します。
上の画像のように通常の状態である四角ではなく六角形の状態が出来上がります。
これの名前をDamageとします。
Damage系の状態をCtrlキーを押しながら選択し、3つすべてをドラッグして六角形のDamageの上にもっていきます。
ドラッグしているアイテムに+が表示されるので、そのままドロップします。
するとドラッグしていた3つの状態がDamageの中に移動します。
上の画像のようになりスッキリしました。
六角形のDamageをダブルクリックすると中身が表示され、ドラッグ&ドロップした3つの状態が表示されます。
状態の遷移の条件等はそのままなので、Base Layer(親元のレイヤー)が見やすくなり、管理もしやすくなります。
Damageから親元のレイヤーに戻る時は上のBase Layerを押すと移動出来ます。
Base LayerのDamageサブステートマシンからBase Layerにある他の状態への遷移は3つありますが、一つの線に矢印が3つついて表示されています、個々の遷移条件を確認するには上のように選択し、インスペクタでどの遷移かを選択すれば個々の条件を編集する事が出来ます。
これでアニメーターコントローラのサブステートマシンを使う事が出来ました。
攻撃やダメージ等ひとくくりに出来る状態をまとめてサブステートマシンの中に入れると制御がわかりやすくなり管理しやすくなると思います。