MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2でホロモンアプリを作る その62(アニメーションコントローラの複数のStateをSubStateMachineに纏める)

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
f:id:bluebirdofoz:20210920233239j:plain

今回はアニメーションコントローラの複数のStateをSubStateMachineに纏めるメモです。

SubStateMachine

SubStateMachine はアニメーションコントローラにおけるいくつかの State をグループに纏めるものです。
State のグループを視覚的に分けることでアニメーションコントローラの構造をシンプルにできます。
docs.unity3d.com

既存のホロモンのアニメーションコントローラ

以前、SubStateMachine を使って State を使った際は SubStateMachine の出入口に Entry と Exit を利用していました。
bluebirdofoz.hatenablog.com

しかし、この場合以下のように必ず Entry に接続された State を経由するため、特に大気中のリアクションで他のアニメーションへの遷移が遅くなる問題が発生してしまいました。
f:id:bluebirdofoz:20210920233324j:plain

上位レイヤーからの直接遷移

今回はこの遷移を上位レイヤーからの直接遷移にすることで、不要な State の経由を無くしてアニメーションがスムーズに遷移するようにします。
待機状態から遷移したい State を一旦全て上位レイヤーに移動します。
f:id:bluebirdofoz:20210920233343j:plain

待機状態の State にトランザクションを接続しなおしました。
f:id:bluebirdofoz:20210920233357j:plain

新たにこれらの State を纏めるための SubStateMachine を作成します。
f:id:bluebirdofoz:20210920233408j:plain

後は纏めておきたい State を SubStateMachine にドラッグするだけです。
f:id:bluebirdofoz:20210920233420j:plain

これで SubStateMachine 内の[上位レイヤー名]という State からトランザクションが接続されて直接遷移ができる形になります。
f:id:bluebirdofoz:20210920233435j:plain
f:id:bluebirdofoz:20210920233545j:plain

動作確認

シーンを再生して動作を確認します。
f:id:bluebirdofoz:20210920233559j:plain

呼びかけやダンスなど他のモードへのアニメーション移行がスムーズに行えるようになりました。
f:id:bluebirdofoz:20210920233639j:plain