こんにちは、株式会社Leon Gameworksの遠藤です。
今回は、アニメーションシーケンスに仕込んであるAnimNotifyを他のAnimNotifyに置き換えるツールを作成していきます。
0:動作環境
本記事はUE5.4.4を基に執筆しており、エディタの言語は「英語」でスクリーンショットを撮影しております。
本記事で作成するツールのプロジェクト一式のデータは、以下からダウンロードできます。
1:準備
まずは、置き換えるためのアニメーションシーケンスを用意します。
マネキンの走りモーションに、足音を鳴らすようなかたちで「PlaySound」Notifyを仕込みました。
次に、置き換えるためのAnimNotifyクラスを作成します。
コンテンツブラウザからブループリント(BP)を作成し、親クラスには「AnimNotify」を指定します。
アセット名は「BP_MyAnimNotify」としました。
2:置き換えツールの作成
準備ができたら、AnimNotifyの置き換えツールを作成していきます。
今回はEditor Utility Blueprintで作成していきます。
親クラスには「Asset Action Utility」を指定します。
アセット名は「EUB_ReplaceAnimNotify」とします。
作成した「EUB_ReplaceAnimNotify」を開き、「ReplaceMyAnimNotify」という関数を作成します。
関数を作成すると、アセットの右クリックメニューから[Scripted Asset Actions]より関数を実行できるようになります。
作成したReplaceMyAnimNotifyから、選択中のアセットを[AnimSequenceBase]でキャストするように繋ぎます。
[AnimSequenceBase]にすることで、アニメーションモンタージュやアニメーションコンポジットなど、アニメーションシーケンス以外のアセットも対応できます。
キャストしたAnimSequenceBaseから[Replace Anim Notifies]に繋ぎ、[Old Notify Class]に「Play Sound」、[New Notify Class]に「BP My Anim Notify」を指定します。
最後に[Class Default]から[Supported Classes]に「AnimSequenceBase」を指定して、アニメーションシーケンス関連のアセットでのみ実行できるようにします。
これでツールの完成です。早速実行してみましょう。
3:値の引き継ぎ
置き換え前のAnimNotifyからプロパティの値を引き継いで置き換え後のAnimNotifyに反映することも可能です。
配置済みの[Replace Anim Notifies]の[On Notify Replaced]に[Create Event]ノードを繋げます。
「Create Event」のプルダウンメニューから、[Create a matching function]を選択します。
そうすると自動で関数が作られるので、関数名を「OnReplaceAnimNotify」に変えておきましょう。
このイベントでは、置き換え時に置き換え前のAnimNotifyと置き換え後のAnimNotifyを引数から取得できるので、キャストすることでプロパティ値を引き継ぐことができます。
4:便利なAnimNotify関連の機能
他にも、AnimNotify関連の便利なノードが用意されているのでまとめて紹介します。
AnimNotifyの追加/削除
Trackの追加/削除
AnimSequence内の情報取得
AnimStateの置き換え
AnimSequence間でAnimNotifyのコピー
5:まとめ
今回はAnimNotifyの自動置き換えツールの作成方法について解説しました。手動での作業コストを大幅に減らせると思いますので、アニメーションシーケンスアセットが多いプロジェクトには特にご活用ください。
本記事で作成したツールのプロジェクト一式のデータは、以下からダウンロードできます。
株式会社Leon Gameworks
●公式サイト
www.leon-game.co.jp
●X(Twitter)
@Leon_Gameworks
トンコツ(遠藤俊太)
●トンコツ開発ブログ
shuntaendo.hatenablog.com
●X(Twitter)
@tonkotsu3656
TEXT_トンコツ(Leon Gameworks)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)、オムライス駆