実装時のバージョン UE5.0.3
今回は、NiagaraFluidsでエフェクトがが発生する地点を動的に変更する方法についてです。手探り実装なので、他にいい方法があるかもしれません。
PositionやらLocationやら、Originやら名称が渋滞してます。調べるのにちょっとだけ苦労しました……。
目次
サンプル
なお、今回は発生地点をBPから変更しますが、同じ要領で様々なパラメータを外部から変更することが可能です。
NiagaraSystemの用意


サンプル用に、NiagaraSystemを一旦用意します。
今回は、Grid3D Flip Splashのサンプルをそのまま使います。
Sphere Origin = SpawnPotision
一般的?な、Niagaraでは「Initialize Particle」の「Position」が発生地点にあたりますが、今回はSphereからEmitterを発生させているので、「Sphere Origin」が発生地点になります。

デフォルトでは、SphereOriginには、Position(原点)が入っているので、ここを上書きしてやれば良いというわけです。


下矢印をクリックすると、「新しいUserパラメータから読み取る」 という項目があるので、適当な名前をつけて作成しましょう。今回は、「SpawnPosition」という名前にしておきました。
名前を変更した場合は、再度紐づけるのを忘れないようにしましょう。

もしくは、左側の追加ボタンからもパラメータを追加可能です。公開されたユーザー内に、今回の場合だと「Position」を追加すればOKです。

これで、外部から操作する準備は完了です。
BPを作成する
今回は、BPから発生地点を動かすようにしたいと思います。
「BP_Niagara」を作成します。(クラスは適当でActorです)

このアクター自体からエフェクトを出すため、コンポーネントで、Niagaraを追加します。
※SpawnSystemでも良いですね。その場合は、ReturnValueを変数化して操作することになります。
今回は、すぐに見た目がわかるようにさらにコンポーネントで「Scene」を追加して、「Construction Script」に変更の処理を書いていきます。

こんな感じです。
Set Niagara Variable ~~ を使用することで、ターゲットのValueを変更してやることができます。
今回は、Positionなので、Set Niagara Variable (Position)を使用していきます。
完成
ビューポート上でSceneを動かすと、エフェクトの位置が変わっていることがわかると思います。
応用編 -Meshの手から出す-
やってることは単純で、SkeltalMeshのボーンの位置を取得して、そこから出しているだけです。
ConeAxisとかConeAngleとかいじれば回転もできる気がします。
SkeltalMesh自体も外部から取ってきたりすれば、もっといろいろできますね。試してみてください。