Niagaraの入門(10) Add Event Handlerについて
Niagaraの入門(10)
UE4確認バージョン 4.20.0
※なおこの段階ではNiagaraはアーリーアクセスなので
※今後内容がかわるかもしれないのでご注意ください
Add Event Handlerについて
EmitterのAddEventHandlerについてですが、
はまりました、、、どはまりしました、、、
Emitterのパーティクルからパーティクルへのイベント通知だと
思っていたのですが
そもそもここのSourceの指定の仕方がわからず、かなり時間を食いました。
プログラムをみてみると
となっており、どうやらEmitterを指定するもののようです。
つまりAddEventHandlerとはEmitterから別Emitterへのイベント通知のようです。
(正確には違いますが、後に記載)
作成の流れ
手順1
まず新規にEmitterを名前をparentEmitterとして作成します。
中身はいつものシンプルな赤いスプライトのみとしてから
Moduleを設定します。
手順2
ParticleUpdateにGenerateLocationEventのModuleを追加します。
以下、動画のような赤いスプライトが円周の動きをするようになります。
ぐ~るぐる pic.twitter.com/NbG2NTnIdh
— カニパンチ (@CrabPunch) July 26, 2018
手順3
次に別のEmitterを作成し、名前をchildEmitterとして作成します。
中身は新規作成したままの状態で、colorだけ青色にします。
手順4
childEmitterにAddEventHandlerを追加して以下のように設定します。
以下、動画のように青いスプライトが複数飛び出すような動きをするようになります。
青いこ pic.twitter.com/wdTWeXnSak
— カニパンチ (@CrabPunch) July 26, 2018
手順5
Systemを作成してparentEmitterとchildEmitterを追加します。
手順6
system内のchildEmitterを選択して、
EventHandlerPropertiesの
Sourceから[ParentEmitter][LocationEvent]
が選べるようになっているので、選択します。
手順7
EventHandlerProperties内の設定を以下のようにします。
次にEventHandlerPropertiesの横の+からReceiveLocationEventを選び。
ReceiveLocationEventのinheritedVelocityScaleを0.25とします。
手順8
最後にchildEmitterのEmitterUpdateのSpawnRateを無効にします。
完成
合体! pic.twitter.com/0bBoZsHd6Q
— カニパンチ (@CrabPunch) July 26, 2018
EventModuleについて
EventHandlerProperties
イベントの通知方法の設定
ExecutionMode
通知先の対象
・EveryParticle
System内の全てのパーティクル
・SpawnedParticles
イベントによってスポーンしたパーティクルにのみ
・SingleParticle
IDにて指定した1つのパーティクルにのみ
MaxEventsPerFrame
フレーム内でのイベント通知の生成の上限を設定します。
上限を超えた場合は無視されます。
SpawnNumber
ExecutionModeがSpawnedParticlesの場合
いくつパーティクルを生成するか指定できます。
またrandomSpawnNumberがチェックされている場合は
この値をランダムの上限とします。
RandomSpawnNumber
スポーンさせるパーティクルの数をランダムにするか。
GenerateLocationEvent
親パーティクルでの
位置イベントの送信に対する設定。
親パーティクルから子パーティクルへどの程度の頻度やタイミングで
イベントを送信するかなど。
EventCondition
位置イベントを送信するかどうか。
EventSendRate
1秒間にどれだけイベントを送信するか
指定した数を1秒間に均等に送信します。
下限は0.000001
GapCorrectionAmount
イベント遅延を考慮し、フレーム位置を先行させます。
これは前回からの経過時間が考慮された近似値となります。
その結果、Ribbonなどのねじれなどが生じることがあります。
ReceiveLocationEvent
子パーティクルでの
位置イベントの受信時の設定。
InheritedVelocityScale
どの程度親パーティクルの速度の影響をうけるか。
InheritedParentNormalizedAge
親パーティクルのlifetimeを受信します。これは親パーティクルが消失したときなど、
子パーティクルも同じように消す時になどに役立ちます。