I From Japan Staff Blog

I From Japan の開発者ブログです

ブループリントでカスタムAnimNotifyを作ってみる!UE4

お久しぶりです!

ヨシゴロウです!

最近Last Standardの開発に忙しく全然記事を更新できていなくて申し訳ございません!

 

今回は

Unreal Engine 4 (UE4) Advent Calendar 2017ということで、あまりインターネットに情報が転がっていなかった

Custom AnimNotifyについて書きます!

 

 

正直AnimNotifyがいっぱいになると、とってもとってもめんどくさいし見にくくないですか???

 

f:id:YoshiakiNakamichi:20171213152410p:plain

昔の僕のプロジェクトの通知の写真です

これでも少ない方なので多い方はもっと多いのでは無いのでしょうか??

 

 

 

ほかにも

Launch Characterでキャラクターを動かしたい時にいちいち通知を動かしたい数値ごとに作ったりとか、カメラシェイクをさせたい時にそれぞれの値ごとに通知を作ったりとか...

 

他にもモーションから何かしらの数値を受け取ったりとかしたくなったり...

 

 

 

とにかく色々なバリエーションの通知をその都度作らないといけないことってないですか!!

 

とてもめんどくさいのでラクしましょう!!

 

 

今回は丁度今年のアドベントカレンダーのYuukiHiraiさんがカメラシェイクの事を書いてらっしゃるので、カメラシェイクを題材にCustom Notify を作ります。

 

カメラシェイクについて詳しい事はYuukiHiraiさんの記事を参考にしてください!

studyworks.hatenablog.com

 

 

 

 

まずは、新規ブループリント作成で

AnimNotifyを親クラスとしてBPを作成してください。

ここでは"Camera Shake Notify"と名付けておきます

f:id:YoshiakiNakamichi:20171213153745p:plain

 

 

 

 

ひとまずこの状態で、適当なAnimation Montageを開いて見てください

 

通知を追加のところを見てみると...

f:id:YoshiakiNakamichi:20171213160714p:plain

 

もうカスタムAnimNotifyがあります!!!!!

 

なんて簡単なのでしょうか笑

 

 

 

 

それでは実際にNotifyの中身を作っていきます

 

 

 

AnimNotifyのBPを開くと最初は何も作成されていないので

関数タブのオーバーライドよりReceived Notifyを選択してください

f:id:YoshiakiNakamichi:20171213154216p:plain

 

 

 

 

 

この関数で通知が呼ばれた時にやりたいことが作れます。

f:id:YoshiakiNakamichi:20171213154353p:plain

 

 

 

このMeshCompからはこのアニメーションを再生しているアクターやそのAnimation BluePrintなどが取得できるのでBP Interfaceを使用してメッセージを送ります

f:id:YoshiakiNakamichi:20171213154656p:plain

 

f:id:YoshiakiNakamichi:20171213155118p:plain

 

 

 

 

このままでは単純にイベントを呼び出すだけなのですが、カメラシェイク用のクラスをInterfaceで指定することもできるので、Interfaceの方でInputにカメラシェイククラスを追加します。

(こちらはInterfaceのBPになります)

f:id:YoshiakiNakamichi:20171213155408p:plain

 

 

AnimNotifyの方に戻ってくるとこんな感じになってます

f:id:YoshiakiNakamichi:20171213155509p:plain

 

 

 

 

そして、列挙体を作成します(もちろん列挙体で無くても大丈夫ですが見やすいので)

f:id:YoshiakiNakamichi:20171213155829p:plain

 

 

 

AnimNotifyクラスに戻り、変数として先程作成した列挙体を追加します

f:id:YoshiakiNakamichi:20171213160008p:plain

 

 

 

 

この時に、インスタンス編集可能とスポーン時に公開にチェックマークを入れてください

f:id:YoshiakiNakamichi:20171213160122p:plain

 

 

 

 

こちらに作成してあるカメラシェイクのクラスをそれぞれに合うように入れ込んでください

f:id:YoshiakiNakamichi:20171213160302p:plain

 

 

 

 

 

この状態でAnimation Montageに通知を追加してみると

f:id:YoshiakiNakamichi:20171213161141p:plain

 

こちらに先程の列挙体が出ているのでAnimation Montageから、どのカメラシェイクを使用するか選択することができます!

 

いちいち沢山の通知を作らなくてもいいので楽ちんですね♡

 

列挙体だけでは無くFloatなど基本的にはなんでもここで設定できるので、Character Launch など以外でも特殊な条件でパーティクルを出したい時などもこちらから設定してInterfaceで飛ばすことができます!

f:id:YoshiakiNakamichi:20171213161602p:plain

 

 

 

ちなみにNotifyのクラスのところでは色の設定とかもできます笑

f:id:YoshiakiNakamichi:20171213161959p:plain

 

 

 

 

こんな感じで簡単にカスタムNotifyが作れるので皆さんも一緒にラクしていきましょう!

 

これからもしばらくは技術ブログをガンガン書いていくことはできませんが、質問などはいつでも受け付けていますので、この記事の事以外にもなにかあればTwitterに飛ばしてください!

慶@I From Japan (@gamecreateYoshi) | Twitter