僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:アニメーションシーケンスでのNiagaraエフェクトの再生方法

 f:id:Bussan_dayo:20181124183629p:plain

 

お疲れ様です。

 

現在Chaos of warという変なゲームを作成中です。

 

このプロジェクトではカスケードそしてNiagaraを使用しています。

 

まだアーリーアクセスなのか、カスケードのようにアニメーションシーケンスでエフェクトを設定して確認する及びアタッチ機能がありません・・・。

 

f:id:Bussan_dayo:20181124172942p:plain

 

 

f:id:Bussan_dayo:20181124173027p:plain

 

そのため通知BPにてこの機能を補完することにしました。

f:id:Bussan_dayo:20181124183710p:plain

 

エフェクト提供:@torisutamoyasitwitter.com

 

まず通知BPの特性を説明します。

通知BPはサウンドやエフェクトをアニメーションシーケンス内にて発生及びスポーンさせることが可能です。

 

 

f:id:Bussan_dayo:20181124173828p:plain

アクターもスポーンされます。(life timeなどでデストロイ処理を入れないとアニメーションシーケンスを閉じるまで消えません。)

 

 

この特性を使って通知BPにてNiagaraのスポーンの処理を作成します。

まずフォルダを右クリックしてブループリントクラスを押します。

 

f:id:Bussan_dayo:20181124174304p:plain

 

親クラスを選択からAnimNotifyを選択します。

f:id:Bussan_dayo:20181124174348p:plain

 

AnimNotifyStateは一定時間出すなどに使用できるTick処理が含まれています。(今回は使いません)

 

エディターを開きオーバライドからReceived_Notifyを選択します。すると以下のブループリントグラフが出てきます。

f:id:Bussan_dayo:20181124174612p:plain

 

 

 

では通常のPlayParticleのプロパティーの構成を見てみます。

f:id:Bussan_dayo:20181124183116p:plain

 

パクりました。

インスタンス編集可で変数を作成しました。

Niagaraの変数、LocationとRotationの変数、SocketのName型の変数となります。

すべてをインスタンスでの編集を許可します。

f:id:Bussan_dayo:20181124183214p:plain

 

処理はSocketをLocationとRotationを取得し、設定したOffset群の変数を追加してあげます。

f:id:Bussan_dayo:20181124184035p:plain

 

そしてSpawnSystemAttachedを出してNiagaraとSocket、そして上記の数値を接続します。

f:id:Bussan_dayo:20181124231923p:plain

 

アニメーションシーケンスに戻り通知部分に作成した通知BPを設定します。

そして作成したプロパティーを埋めるとナイアガラのエフェクトでていることを確認します。

f:id:Bussan_dayo:20181124184514p:plain

 

 自分のプロジェクトですと、NiagaraはBPに包まれている事が多いので以下のように、キャストに成功(インゲームと判断)した場合、設定したBPをスポーンする関数を呼んでいます。

 

f:id:Bussan_dayo:20181124185758p:plain

 

これでエフェクト製作時に確認出来て、尚且ゲームにも反映されるようになりました。

 

以上