見出し画像

Godot 4.2 AnimationMixerを追え

AnimationMixerとは一体全体何者なのか?

Godot Game Engine 4.2ではAnimationMixerというノードクラスが追加されました。これはAnimationPlayerとAnimationTreeの共通のベースクラスとなっています。
[4.1]
 AnimationPlayer : Node
 AnimationTree : Node
[4.2]
 AnimationPlayer : AnimationMixer
 AnimationTree : AnimationMixer

AnimationMixerをエディタのGUI上からシーンに新規追加しようとしても、アイコンはグレーアウトされていて、追加を実行できません。抽象クラスとかインターフェースクラス的な扱いのようです。だからユーザはこのクラスのことを普段は特に意識しなくていいはずです。AnimationLibraryの入れ物としてPlayerもTreeもひとまとめに使えるようにした、というのが狙いなように思います。
でも、とはいえ、この変化に合わせて、AnimationPlayerもなんか変わったっぽいでしょう? 気になるよね。

新しいAnimationPlayerで出来るようになったこと、できなくなったことは何か? それを知る手掛かりとして、Godot 4.1と4.2における、AnimationPlayer / AnimationTree / AnimationMixerの、それぞれの関数の有無を確認してみました。

Player/Tree/Mixerの関数

Root Motion

上の表の薄い緑色のセルの関数が、4.2のAnimationPlayerで新規に使えるようになった関数やプロパティです。AnimationTreeにあった、Root Motion関係の関数が輸入されたようです。
Root MotionはUnityやUEにもあった同名のものと同様の機能だと思います。アーマチュアのルートボーンのTranslationを、ボーンの移動ではなく、キャラクターの移動として解釈して、コリジョンや物理の影響込みでノード(UnityならGameObject)を動かす機能ですね。ソウルシリーズみたいなアクションゲーム作るならいい機能なのでしょう。剣を振るたびに一歩ずつ前に出る。これがAnimationPlayerでも使えるようになったってことでいいのかな?

重複プロパティの整理

また、PlayerとTree間で、名前や列挙体が違うだけで実質同じ機能だったプロパティや関数が、統廃合されて整理されています。命名が不統一で紛らわしい側面もあったので、すっきりしました。

【4.1】
同じ機能のenumがPlayerとTreeで重複してました。
[AnimationPlayer]
 enum AnimationMethodCallMode

 ・method_call_mode
 ・get_method_call_mode()
 ・set_method_call_mode()
 enum AnimationProcessCallBack
 ・playback_process_mode ←紛らわしかった
 ・get_process_callback()
 ・set_process_callback()
[AnimationTree]
 enum AnimationProcessCallBack

 ・process_callback
 ・get_process_callback()
 ・set_process_callback()

【4.2】
Mixerで1つにまとまりました。
get/set関数は存在はしてますが、表面上はなくなったみたいです。
[AnimationMixer]
 enum AnimationCallbackModeMethod

 ・callback_mode_method
[AnimationMixer]
 enum AnimationCallbackModeProcess

 ・callback_mode_process

【4.2】互換性のため存在
これらの関数やenumはそのうち無くなると思います。
[AnimationPlayer]
 enum 
AnimationMethodCallMode
 ・get_method_call_mode()
 ・set_method_call_mode()
 enum AnimationProcessCallBack
 ・get_process_callback()
 ・set_process_callback()
[AnimationTree]
 enum AnimationProcessCallBack

 ・get_process_callback()

deterministic

あと、AnimationMixerに、bool deterministicというプロパティが追加されました。これだけ新機能です。これがtrueだと、アニメーションのブレンドが正規化されない(加算になるのかな?)とかなんとか。


以上です~~~
4.2使っていこう!


この記事が気に入ったらサポートをしてみませんか?