ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】〈Tips〉アニメーション通知をカスタマイズして便利に使おう

目次

 

はじめに

 

今回はアニメーション通知をカスタマイズしてより便利に利用する方法について解説します。

 

アニメーション通知とはその名の通りアニメーションに通知を付けることで、そのタイミングにアニメーションブループリントで実装されているイベントを呼んでくれる機能です。

足音や剣などの当たり判定など、非常に便利な機能です。

 

通常のアニメーション通知は通知に対応したイベントを1対1で作成します。

しかし、それでは通知の種類が増えるたびにイベントを増やす必要があり可読性に欠けます。

▼アニメーション通知それぞれにイベントを追加している

 

そこでアニメーション通知をカスタマイズして、インターフェース経由でイベントを呼び出せるように編集していきたいと思います。

 

▼一つのイベントで済む

 

この記事ではTPサンプルを使って足の接地タイミングを通知で取得することを題材に解説します。



解説

①カスタマイズするアニメーション通知を作成

コンテンツ右クリックからブループリントクラスを選択します。

 

検索にAnimNotifyと入れこれを選択します。

 

名前はBP_CustomAnimNotifyとしました。

 

②インターフェースの作成と編集

コンテンツ右クリックからブループリントインターフェースを作成します。

 

名前はブループリントインターフェースからBPI_を付けて、BPI_ReceiveAnimNotifyとしました。

 

インターフェースを開いて受け取り用のイベントを作ります。

インプットにName型の変数をそれぞれつけておきましょう。

 

③インターフェースの実装

アニメーション通知を受け取りたいブループリントに作成したインターフェースを実装します。

今回はThirdPersonテンプレートを使っているのでBP_ThirdPersonCharacterに実装します。

 

クラス設定からインターフェースを実装します。

 

イベントを実装を押します。

 

これでインターフェースの準備は完了です。

 

名前でスイッチして処理を入れたり、アニメーションブループリントにもインターフェースを実装してイベントを呼び出せるようにするのもアリです。



④アニメーション通知の編集

作成ブループリントを開いてReceived Notifyをオーバーライドします。

 

そうするとこのようなノードが現れます。

 

変数NotifyNameを作って編集可能にします。

 

あとはインターフェースの実装を確認して呼び出すだけです。

 

⑤使用方法

 

アニメーションからアニメーション通知を追加します。

 

NotifyNameに分岐で使用する名前入力します。

 

あとは呼び出し側で実装してください。

 

こんな感じに呼ばれていたら成功です、


 

⑥問題点と解決策

この仕組みには少し問題があります。

このように同時にイベントが呼び出される場合、受け取る側は1つしかないためイベントが片方のみしか呼ばれないことがあります。

 

解決策として、

1.ずらす

通知をずらして同時に呼ばれないようにします。

 

2.カテゴリー別にイベントを作成して分散する。

Enumなどでカテゴリーで分け、インターフェースの呼ばれる側を複数にします。

 

Enumカテゴリー

▼通知に変数の実装

▼スイッチでインターフェース呼び出しを変更

▼通知のカテゴリーを変更

▼同じタイミングでも、カテゴリーが異なればしっかり呼ばれます。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。