UE4 NiagaraのLifetimeを無制限にする方法
環境
UE4.25.3
結論
説明が長くなってしまったので、最初に結論を書いておきます。
1.
「Particle State」Moduleの「Kill Particles When Lifetime Has Elapsed」フラグをOffにして
同Moduleの「Loop Particles Lifetime」にチェックを入れるだけです。
2.
「Particle State」Moduleの「Kill Particles When Lifetime Has Elapsed」フラグをOffにして
Lifetimeに「Normalized LoopAge」を割り当てる
3. 「Initialize Particle」と「Particle State」を使用しない
概要
Niagara Emitterを作成した際にLifetime無制限のEmitter作成方法が分からず、困ったので調べてみました。
まずはCascadeのおさらいから。
CascadeではLifetimeを使用しないだけで対応が可能でした。
では、Niagaraではどうなるかというと
Initialize Particle Moduleで「Lifetime」のチェックを外しても削除されてしまいます。
BaseとなるNiagara Emitterの作成
今回はemitterのTemplateとして「Fountain」を使用して作成していきます。
名前は「NS_Inifite」としておきました。
まずは一度だけ生成されればよいため、「SpawnRate」を無効化して
「Spawn Burst Instantaneous」を追加して
「Spawn Count」を「1」に設定します。
続いて、「Emitter State」を選択して
「Loop Behaviour」を「Once」に変更して
「Loop Duration Mode」を「Infinite」に変更します。
また、確認のために移動は不要ですので
「Add Velocity in Cone」と「Gravity Force」を無効にします。
次にLifetimeの設定が不要ですので
「Initialize Particle」の「Lifetime」のチェックを外して無効化します。
このままではLifetimeが無制限であっても透明度が更新されて見えなくなりますので
「Scale Color」も無効にしておきます。
Cascade風にいけば、ここまでの設定でLifetime無制限で消えないエフェクトが作成できそうなんですがこのままではまだ消えてしまいます。
ここからLifetimeを無制限にするための方法を3通り紹介していきます。
Niagara でのLifetime無制限の設定方法
まず、設定を変更する前にLevel配置 or SpawnするためにNiagara Systemを作成しておきましょう。
「NS_Inifnite」を選択して右クリックして「Create Niagara System」を選択してください。
作成されたNiagara Systemは「NE_Infinite」にrenameしました。
0. よくある間違い
まずはよくある間違いから。
Lifetimeに大きな値を設定するというものです。
もちろん、これで済むケースもあるかもしれませんが、あまりオススメはできませんね。
結局のところこの設定時間を経過した場合はParticle が消えてしまいますね。
1. Loop Particles Lifetimeを使用する
ここからようやくLifetimeを無制限にする項目になります。
まず「Particle State」を選択して
「Kill Particles When Lifetime Has Elapsed」のフラグを無効にします。
続いて同Module内の
「Loop Particles Lifetime」にチェックを入れます。
これでLifetimeがLoopしてParticle が消えることがなくなります。
動かないのもあれなので、適当に動きを与えました。
これで消えることはないです。
2. NormalizedLoopAgeを使用する
次の方法はNormalizedLoopAgeを使用する方法です。
「Initialize Particle」を選択して「Lifetime」に「NormalizedLoopAge」を指定します。
これだけではまだ不完全で、先程同様に
「Particle State」の「Kill Particles When Lifetime Has Elapsed」のフラグを無効にします。
設定はこの2つだけです。
3. Particle Stateを使用しない
1, 2の設定ではParticle StateのKill Particles...フラグを無効することで対応してきました。
3つ目の方法ではParticle State自体を使用しないというものです。
ひとまず「Particle State」を無効化します。
すると下記のように「Initialize Particle」でエラーが出てしまいます。
エラーを解決するにはParticle Stateが必要ということですね。
ですが、今回は「Initialize Particle」自体も無効化してしまいましょう。
さて、これでエラーはなくなって
Lifetimeの制限もなくなりました。
ですが、これではInitialize Particleで設定していたColorやSprite Size等の情報も無効化されてしまいます。
そのため、「Set new or existing parameter directly」を使用して各Parameterを初期化していきます。
まずは「Particle Spawn」に「Set new or existing parameter directly」を追加します。
これで各Parameterの初期化が行えるようになりました。
「Set Parameters」を選択して右上の「+」アイコンから初期化するParameterを追加していきます。
まずは「Color」を追加しました。
これで初期色情報を設定することができるようになりました。
次にSprite Sizeを設定したいので
「Sprite Size」を追加します。
とりあえず10 x 10程度にしておきました。
このように「Set Parameters」Moduleでは複数のParameterの設定を行うことが可能です。
回転は今回関係ないため、Sprite Rotationは未設定です。
以上で3つ目のLifetime設定方法とSet Parameterの設定紹介が終わりです。
まとめ
Lifetimeを無制限にする方法の設定方法については以上になります。
ついでで紹介したSet Parameterですが、こちらも何気に便利なModuleで結構重宝しています。
実運用する上では極力Levelに配置するのは避けて
必要なタイミングでSpawnして不要になったらDestroyするのがベストではあると思います。
調べてみるとLifetimeを大きな値にしよう!という紹介が多かったため、調べてみました。
何かしら役に立てば幸いです。
以上!よきNiagaraライフを!