見出し画像

【UE5】キャラクターや地形とヒットする流体を作ってみる


はじめに

Unreal Engine のバージョン: 5.4.2 
当たり判定を持った流体を使って攻撃スキルか何かを作れないかな?と思い、少し調べてみました。
NiagaraのGrid3D Flip Splash でやりたいことができそうだったので、まずは紹介します!

Niagara Fluids

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/niagara-fluids-quick-start-guide-for-unreal-engine?application_version=5.4

Grid3D Flip Splash

Niagara Fluidsはいろいろな種類がありますが、その中のGrid 3D Flip Splashテンプレートを選択します。

テンプレートを選択してアセットを作成

アセットを作成したら、確認しやすくするためとりあえずループ設定にしておきます。

ループ設定

マップに配置すると、流体が無限に放出されるようになっていますが、壁やキャラを貫通しています。

コリジョンの設定をしていきましょう。作成したNiagara Systemsのアセットを開きます。
公式ドキュメントの情報は少し古いようですが、「User Parameters」の「Collide_Meshes」の設定を変えることで当たり判定が機能するようになります。
※Detailsの方ではなく、User Parametersの方にコリジョンの設定があります

User Parameters

プレイヤーに当たるように、まずはプレイヤー自体にPlayerタグをつけて、Niagara Systemsの方でもPlayerと当たるように設定します。

プレイヤーのキャラクターBPでタグを設定
Niagara SystemでPlayerタグをヒット対象に追加

上記のタグの設定を行なったら、マップに配置されたNiagara Systemsはいったん削除して、再度置きなおしてください。Actor TagsにPlayerが設定された状態になっているはずです。

マップに配置されたNiagara Systemsの方で、Source Actorsに他のアクターの参照を追加することでも衝突検知できるようです。地形はここに設定してみました。

Source Actorsに地形アクターを設定

ここまで設定すると、流体がキャラクターや地形と衝突するようになります。良い感じ!

2.5D Splashes with Niagara Fluids

公式プラグインです。(UE 5.4.2 時点ではExperimental)
公式チュートリアルを参考に、流体シミュレーションを導入してみました。
https://dev.epicgames.com/community/learning/tutorials/qXJK/unreal-engine-2-5d-splashes-with-niagara-fluids

流体が動きましたが、チュートリアルでも言われている通り、2Dベースのシミュレーションなので、キャラクターのようなDynamicな3D物体とはうまく干渉できないようです。
おそらくこちらの方が軽量なのだと思いますが、ゲーム要素として使う党よりも、VFX表現として使うのが適切ではないかと思いました。

Zibra Liquids Free

https://www.unrealengine.com/marketplace/ja/product/zibra-liquids-free?sessionInvalidated=true

Dynamicなオブジェクトとも干渉できて非常によさそうなのですが、UE 5.4ではサポートされていませんでした。

おわりに

Grid3D Flip Splashテンプレートを使うことで、簡単に流体とオブジェクトの衝突が実現できました。
衝突した相手に衝撃やダメージを与えたり、衝突位置にテクスチャを塗ったりできれば、ゲーム要素として活用できそうに思います。

この記事が気に入ったらサポートをしてみませんか?