Open3

[UE5] Niagara

chicchiiskchicchiisk

UNiagaraComponent::Deactivateしてもエフェクトがすぐに消えない

UNiagaraComponent::Deactivate()はエフェクトの寿命を待ってDeactivateする。
すぐに無効化したい場合は、UNiagaraComponent::DeactivateImmediate()を使う。

chicchiiskchicchiisk

エフェクトをつけたアクターを移動させても、エフェクトがついてこない

EmitterのLocalSpaceフラグを立てる

chicchiiskchicchiisk

スプラインに沿ってエフェクトを表示させる

モジュールスクリプトの作成

まず、スプラインを各パーティクルの位置に変換するモジュールを作成する。

アセットブラウザー>右クリック>FX>Script>Niagara Module Script で、モジュールスクリプトを作成。
ここではMS_Splineという名前にする。

InputにSplineを設定し、Splineから線を引き出してSampleSplinePositionByUnitDistanceWSへつなぐ。出力は、particelsのPositionピンをはやして、そこへつなぐ。

保存して、MS_Splineを閉じる。

Niagara Systemを作る

アセットブラウザーから、NiagaraSystemを作る。
テンプレは何でもいい(ここではSimpleSpriteBurstを選択)
名前は何でもよいが、ここではNS_PathVisualizerとする。

NS_PathVisualizerを開き、
ParticleUpdateに、先ほど作ったモジュールスクリプトを指定する。(図中のMS Spline)

User ParametersにSpline型のパラメータを作る

カスタムモジュールスクリプト( MSSpline)のDetailsの、Spline User Parameterに、
先ほど作ったユーザーパラメーターを指定する

Reanderセクションを選択し、既存のレンダラーを削除し、RibbonRendererを追加する。

Emitter UpdateにSpawnRateを追加する。
今回SpawnRateは100程度にしておく。

NS_PathVisualizerを保存して閉じる。

ブループリントを作る

アセットブラウザーから、Blueprintクラスを作成する。
親クラスはActorとする。
ここでは、BP_TestSplineという名前にする。

BP_TestSplineを開き、ComponentsにSplineを二つ追加する。
NiagaraComponentも2つ追加しておく。

※手元の環境では、SplineとNiagaraをひとつずつ追加するだけで、勝手にエフェクトがパスに沿う動きをするようになったのだが、今回は応用が利くように、手動で紐づけする方法を試すため、二つのSplineを作成し、それぞれに別のNiagaraエフェクトを当ててみる。

Niagara ComponentのそれぞれのNiagara>Niagara System Assetの項目に、先ほど作成したNiagara System(NS_PathVisualizer)を指定しておく

SplineComponentのそれぞれを選択し、Viewport上で適当なスプラインを作成する。

ContructionScriptタブを開き、
NiagaraComponent、SplineComponentのGetノードをそれぞれ配置。
NiagaraComponentからSet Niagara Variable(Object)ノードを引き出し、配置する。
引数のObjectには、沿わせたいSplineComponentを入れ、
In Variable Nameには、NS_PathVisualizerのUser Parameterで設定したパラメータ名を入れる。

パスに沿って線が表示されたら成功

念のため、適当なレベルに配置してみて、動作を確認する。