【UE4】Niagaraのエフェクトを再生する
Verは4.24です
【初めに】
今回の記事は、エフェクトそのものを作る内容ではありません。
Niagaraで作成したエフェクトの再生関係の内容となります。
Niagaraでエフェクトは作れたけど、良い感じに再生ができない!
などの場合に参考にしてもらえればなと思います。
【基本】
かなり基本となる部分から
レベルにそのまま配置するだけであれば
ドラッグ&ドロップでカスケードと同じように配置できます。
特定のボタンを押したとき、などの場合はこのようになります
とりあえずキーボードのAキーにしてますが
カスケード用とは少しだけ名前が変わります
Spawn System at Location
がNiagara用
Spawn Emitter at Location
がカスケード用となります
プレイヤーの位置にエフェクトを再生する場合は
座標をそのまま接続すればいいです
ただし、Niagaraの場合Locationは発生位置そのものというより
Engine.Owner.Position
に情報を渡すだけとなります
BPから再生は、被ダメ時やモーション再生時などでもできます
この辺はカスケードと同様かなと。
【アニメーション連動】
今のVerではPlay Niagara Particle Effect
がアニメーション通知で利用する事ができます
これにより、アニメーションシーケンス上でエフェクトを再生する事も可能です
設定出来る内容はこのようになっています
座標変更などはある程度はできますが、ある程度でしかできません。
なので、このような、User.系統のデータを操作する事がデフォルトでは出来ません。
なので通知を作ってみよう、という事になります。
【アニメーション通知を作る】
アニメーション通知を作るためのBPを作ります
Anim 辺で検索すれば出てくるかなと
このAnimNotifyで作ります。
上の関数のところから、オーバーライドを選択して作ります。
そうすると、この二つのノードが出てきます
あとはこの中で処理を作るだけです。
この時点で、アニメーションシーケンス側から
通知で出せるようにもなっています
恐らくですが、最低限必要と思われる要素はこちらになると思います
アニメーションさせるキャラの座標を持ってくる場合は
Mesh CompからGetWorldLocationで座標を取得しましょう。
ここから更に動かすば場合は、ここにVector+Vector等を追加して、座標を動かします。
RotationやScaleは自分の操作しやすいように作っていくのがベストかなと
また、アニメーションシーケンス内で操作する場合
変数をインスタンス可能な状態にしておきましょう、右の目のアイコンをクリックするとONにできます
あとは、シーケンス上から変えたいパラメータを入れておけばOKです
【条件によって再生を変える】
アニメーション通知を使った例でもう一つ
条件によって再生を変えるというものですが
何の為かというと、属性差分を作りたいなと
BPで再生するエフェクトを分離させるだけなら楽ですが
アニメーション通知もBPなので、通知でも同じだろう、という事で作りました。
自分が作ったものはこちら
解りやすいようにとりあえず分離は二つにしています。
まず属性の判定は、BPインターフェースを使って
現在の属性に使っている変数を取得してきます。
属性によって再生するものを分ける処理は
整数型で分離する専用ノードがあるので、これを使うだけです
ここに変数のセットが入っていますが
これにはローカル変数を使っています。
普通の変数の場合、GetはできますがSetはできない為です。
また、変数をそのまま繋げてはいけない理由として。
Niagaraを再生するノード自体が、一つしか変数を入れることができない為です。
なので、条件によって、どちらを取得するのかを、選択し
選択したものを、一度ローカル変数に保存します
そして、そのローカル変数に代入されているデータを再生します。
機能としてはこれにて完成です。
大事な点としては
・どれを再生するのかの変数を持ってくる
・その変数で分離する
・一度ローカル変数に保存してから再生する
主にこの三つだと思います。
ローカル変数は使わずに済む方法もありそうでしたが
そこまでは自分では判断できませんでした。
先ほどので完成はしましたが
確認が面倒なので、確認用の機能も入れたのがこちらになります。
上の赤枠部分を追加しただけです
やっていることは単純で、Spawn0という名前の変数がONの場合
再生するエフェクトのIDを固定する、というものです。
ゲーム中には再生を分けれても、シーケンス上で分ける手段が無かったので
強引に再生するものを弄るものです。
確認しやすくする機能も、あると作る側としては楽になりやすいかなと。
今回はここまでとなります。
発生の制御関係については、あくまで再生に必要だから作っただけであって
そちらがメインではないので
もっとやりやすいやり方、などもあると思います。
あればそっと教えてくれると幸いです。