【Niagara】BPで動的にNiagaraを制御する
Niagaraにて、BPと連動する事で、数値を動的に変える方法を一つ紹介します。
バージョンは4.22.0です。
まずは確認用のデータを作ります。
NiagaraSystemから
Create a new system from a set of selected emitters
から
Fountain
を選択してNiagaraSystemを作ります。
上に向かってparticleが放出され、重力によって下に落下する動きのものが、生成されています。
ただ、このままでは若干解りにくいので
少し弄ります。
まずは、Calculate Size by Massのモジュールから、particleの大きさを小さくします
今回はXとYに0.25にします。
次に、Colorのモジュールから色を変更します
見やすいように、今回は青色でエミッシブに高い数値を入れて発光させましょう
Bを100に設定しました。
発生数が少ないと確認しにくいので
SpawnRateを1000にして、発生数を増やします。
放出位置にブレ幅があり、少し確認しにくい部分もあるので
Sphere Locationの
Sphere Radiusを0に設定して、発生位置のブレ幅をなくしましょう。
これにて確認用のparticleとしては完成です
青い粒子が、大量に上昇し、重力によって落下します。
#Niagara
— moyasi@4/13日初の登壇決定! (@torisutamoyasi) April 10, 2019
BPで動的にNiagaraの数値を変えるテスト
最近記事書いてないので、少し書きたい pic.twitter.com/FfIM6wefUg
#Niagara
— moyasi@4/13日初の登壇決定! (@torisutamoyasi) April 10, 2019
色とか大きさとかを調整して、解りやすくしてみるとこんな感じ pic.twitter.com/K6NOw23NKH
今回は、BPで制御して、この様な動きを作りたいと思います。
今回はレベルブループリントで発生させています。
単純にレベルブループリントで発生させる場合は
このようになります。
発生の基準の座標は、レベルに配置したCubeから座標を取ってきています。
ブループリントで動的に制御する場合。
まずはNiagara側で、ブループリントで制御する用のパラメータが必要になります。
パラメータの部分の+のアイコンから出てくるメニューで
Vectorを選択し、Vector型のパラメータを追加します。
名前はUser.Locationとしました。
名前は自由と言いたい所ですが
最初のUser.までは必須なので注意です、全て小文字でも恐らく大丈夫です。
追加したパラメータが、ユーザーの中にあるかを確認してください。
ここの名前で判断しているようで、ここ以外の場所に入っている場合は
名前が間違っていると思われます。「.」まで必要なので注意してください。
次に、作ったパラメータをNiagaraのデータ内に挿入する必要があります。
Positionをこのように書き換えます。
Engine.Owner.Position は、エフェクトを配置した座標を取ってきてくれます。
今回の場合、User.Locationで配置した座標もとってこれば不要とはなりますが。
計算をわかりやすくする為に、この用に今回は設定しておきます。
これにて、Niagara側での設定は完了です。
今回は、円を描くように発生位置を制御したいので
この様に作りました
SinとCosを使って円を描く処理です。
また、最後にLocationの変数にSetしておきます。
最後に、このように繋げれば完成です。
先ほどの円を描いて、Locationの変数にSetした後に
Set Niagara Variable(Vector3)
を繋ぎます。
また、このノードには、Niagaraそのものを発生させているノードから
Retum Valueの情報をターゲットに接続して、発生させたエフェクトと関連付けます
In Variable Nameには、Niagaraで設定しておいたパラメータ名にしておきます。
最後に、SetしていたLocationの変数をGetしてきて繋げます。
これにより、BeginPlayにてエフェクトを発生させ
その発生させたエフェクトに対して
Set Niagara Variable(Vector3)
をTickで毎フレーム処理をさせる事で
User.Locationのパラメータに毎フレーム円を描く座標を持ってきて、それを更新させます。
このUser.LocationはNiagara上の設定で
エフェクトを配置した座標から加算しています
それにより、配置した場所を基準にくるくる回る処理が完成しました。