アニメーターコントローラのサブステートマシンを使ってみる

今回はUnityのアニメーターコントローラのサブステートマシン(Sub-State Machine)を使ってみたいと思います。

サブステート1

アニメーターコントローラでアニメーションの制御を細かくしていくと、段々と上のように複雑な状態遷移が作成されていきます。

さらに状態を増やしていくとどこがどう繋がっているのかがわかりづらくなってしまいます。
そこで上の画像のようにDamageを受けた時の状態は同じ遷移(条件は違いますが)になっているので、これらをまとめてしまいましょう。

スポンサーリンク

アニメーターコントローラでサブステートマシンを作成する

まずはアニメーターウインドウで

サブステート2

右クリック→Create Sub-State Machineを選択します。

サブステート3

上の画像のように通常の状態である四角ではなく六角形の状態が出来上がります。
これの名前をDamageとします。

サブステート4

Damage系の状態をCtrlキーを押しながら選択し、3つすべてをドラッグして六角形のDamageの上にもっていきます。

ドラッグしているアイテムに+が表示されるので、そのままドロップします。
するとドラッグしていた3つの状態がDamageの中に移動します。

サブステート5

上の画像のようになりスッキリしました。

サブステート6

六角形のDamageをダブルクリックすると中身が表示され、ドラッグ&ドロップした3つの状態が表示されます。

状態の遷移の条件等はそのままなので、Base Layer(親元のレイヤー)が見やすくなり、管理もしやすくなります。

サブステート9

Damageから親元のレイヤーに戻る時は上のBase Layerを押すと移動出来ます。

サブステート8

Base LayerのDamageからBase Layerにある他の状態への遷移条件は上のように選択すると

サブステート7

インスペクタ上ですべての遷移が表示されるので、そこで選択し変更する事が出来ます。

これでアニメーターコントローラのサブステートマシンを使う事が出来ました。

攻撃やダメージ等ひとくくりに出来る状態をまとめてサブステートマシンの中に入れると制御がわかりやすくなり管理しやすくなると思います。