[UE5]Niagara Fluidsで、エフェクト発生地点(Spawn/Position)を動的に変更する

2 min

実装時のバージョン 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です。

これで、外部から操作する準備は完了です。

Offcetに値が入っていると、その分だけズレるので、動的制御時には0にして置きましょう。

BPを作成する

今回は、BPから発生地点を動かすようにしたいと思います。

「BP_Niagara」を作成します。(クラスは適当でActorです)

このアクター自体からエフェクトを出すため、コンポーネントで、Niagaraを追加します。

※SpawnSystemでも良いですね。その場合は、ReturnValueを変数化して操作することになります。

今回は、すぐに見た目がわかるようにさらにコンポーネントで「Scene」を追加して、「Construction Script」に変更の処理を書いていきます。

こんな感じです。

Set Niagara Variable ~~ を使用することで、ターゲットのValueを変更してやることができます。

今回は、Positionなので、Set Niagara Variable (Position)を使用していきます。

完成

ビューポート上でSceneを動かすと、エフェクトの位置が変わっていることがわかると思います。

微妙に位置がずれる場合は、Offsetが0になっていないかもしれません。

NiagaraSystemを開き、SphereLocationのOffcetを確認してみてください。

応用編 -Meshの手から出す-

やってることは単純で、SkeltalMeshのボーンの位置を取得して、そこから出しているだけです。

ConeAxisとかConeAngleとかいじれば回転もできる気がします。

SkeltalMesh自体も外部から取ってきたりすれば、もっといろいろできますね。試してみてください。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です