本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回はSub-StateMachineを使ってアニメーションのステートを一纏めにするメモです。
Sub-StateMachine
Sub-StateMachine はアニメーションの複数の State を1つの State として管理する機能です。
この機能を活用することで AnimationController の構造をシンプルに保つことができます。
docs.unity3d.com
Sub-StateMachineを作成する
[Animator]画面で右クリックから[Create Sub-State Machine]を実行して、新規 Sub-State を作成します。
Sub-State を作成すると[Animator]画面に追加されます。
ステートを選択すると[Inspector]ビューから命名などの基本設定を行うことができます。
Sub-State の内容を編集する場合は、ステートをダブルクリックして Sub-State の編集画面を開きます。
デフォルトで以下の4つのステートが設定されています。
・Entry:Sub-State自体の入口ポイント
・Exit:Sub-State自体の出口ポイント
・AniyState:全ての状態からの入口ポイント
・(Up)BaseLayer:上位レイヤーとの直接の接続ポイント
ステートを作成する
Sub-State の中では通常の編集画面と同様にステートの作成・編集が行えます。
試しに Sub-State の Entry と Exit に接続したステートを作成してみます。
右クリックから[Create State -> Enpty]を実行して、新規ステートを作成します。
新規ステートが作成されるので[Inspector]ビューからアニメーションの設定など普通のステートと同様の設定を行います。
Sub-State 内で新規作成したステートは自動的に Entry にトランジションが張られます。
Exit ポイントにもトランジションを張ってみます。
ステートを右クリックして[Make Transition]を選択します。
そのまま Exit ポイントをクリックしてにトランジションを張ります。
これで Sub-State 内で Entry と Exit ポイントにトランジションを張ったステートが準備できました。
次に上位レイヤーに戻り、Sub-State 自体のトランジションを設定します。
接続したいステートを右クリックして[Make Transition]を選択します。
そのまま Sub-State をクリックします。
このとき、Sub-State 内の各ステートに個別にトランジションを張るか、Sub-State 自体にトランジションを張るか選択できます。
今回は Sub-State 自体にトランジションを張りたいので[StateMachine -> (Sub-State名)]を選択します。
Sub-State 側からもトランジションを張ります。
上位レイヤーで Sub-State 自体からトランジションを張る場合は通常レイヤーと同様に右クリックして[Make Transition]を選択するだけです。
接続先のステートを選択してトランジションを張ります。
これで Sub-State 自体への入口と出口を設定することができました。
最後にトランジションの遷移条件を設定します。
入口の条件は上位レイヤーで設定します。特定の bool 値が true の場合、Sub-State に遷移するよう設定しました。
出口の条件は Sub-State 内で設定します。
これで遷移条件の設定は完了です。特定の bool 値が false の場合、Sub-State から抜けるよう設定しました。
最後にシーンを再生して AnimationController の遷移を確認します。
bool 値の変更に合わせて Sub-State 内のステートが再生されれば成功です。