Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

UE4 Particleの当たり判定イベントの取り方

UnrealEngine4でParticleの当たり判定イベントの取り方の記事です。

 

下はParticleが地面に衝突した際に文字を出力しているところです。

f:id:nabesi777:20191106202243g:plain

 

 

使用したものはThirdPersonテンプレートとマーケットプレイスで無料でダウンロードできるInfiityBladeのEffectsです。InfiityBladeのEffectsの中にはたくさんのParticleの見本が入っているためダウンロードしてない方はどうぞ!

 

バージョンは20.3です。

 

f:id:nabesi777:20191106195304p:plain

 

今回はその中のP_Env_Fire_Grate_01を使用↓

f:id:nabesi777:20191106195459p:plain

 

まずパーティクルの設定から。

EventGeneratorを追加

f:id:nabesi777:20191106195656p:plain

 

EventGeneratorのDetailsを以下のように設定

f:id:nabesi777:20191106195806p:plain

 

続いてActorCollidionを追加

f:id:nabesi777:20191106200037p:plain



ActorCollidionのDetailsを以下のように設定

CollideTypeは今回は地面への衝突なのでWarldStaticです。

f:id:nabesi777:20191106200002p:plain

 

その他のパーティクルの項目はデフォルトのままです。

これでパーティクルの衝突イベントを取れるようになりました。

 

次はイベントの受信です。

 

イベントの受け取り方2種類です。

 

ひとつめはブループリントを作成してその中で受け取ります。

Actorブループリントを作成

f:id:nabesi777:20191106200316p:plain

 

コンポーネントへParticleSystemを追加して、先ほどのパーティクルを当てはめ

f:id:nabesi777:20191106200358p:plain

 

f:id:nabesi777:20191106200423p:plain

 

 

コンポーネントのParticleSystemを選択した状態で、OnParticleCollideイベントを呼んであげます。

f:id:nabesi777:20191106200701p:plain

 

これで当たり判定がとれるようになりました。

f:id:nabesi777:20191106200612p:plain

 

ブループリントを使わずスポーンさせたときバージョンです。

今回はマップ上へ適当にCubeを配置して、そこにParticleをスポーンさせます。

f:id:nabesi777:20191106200939p:plain

 

レベルブループリントへこんな感じでノードを組みます。

f:id:nabesi777:20191106201850p:plain

 

結果

f:id:nabesi777:20191106201925p:plain

 

 GPUパーティクルで使いたかったんですが、 GPUパーティクルにするとEventGeneratorが使えず、どうやってイベントをとればいいかわかりませんでした・・

 

f:id:nabesi777:20191106203918p:plain