アンリアルクエスト5で勉強したProcedural Meshでオブジェクトを切るについて

プロジェクトのサンプルはアンリアルクエスト5のプロジェクトを使いました。

https://historia.co.jp/unrealquest05 のDiscordから #プロジェクトデータ配布のチャンネルからDLできます。Discordサーバーが消えた場合はあとで考えます。

使用バージョンは
UE5.2.0

切られるオブジェクトを用意する

ブループリントクラス>Actorで作成します。

名前はBP_ProceduralMesh_Actor としました。

作成したブループリントを開き

DefaultSceneRootの下に

ProceduralMeshとCubeまたはキューブを追加します。

Cubeコンポーネントの設定

M_Procedralというマテリアルを作って

/Game/UnrealQuest5/Props/LevelPrototyping/Meshes/SM_Cubeをコピーしてきて
CubeコンポーネントのスタティックメッシュをSM_Cubeに変更

コピーしてきたSM_Cubeの設定を行います。

AllowCPUAccess にチェックを入れてCPUからでもメッシュ情報にアクセスできるようにします。

Procedural Meshコンポーネントの設定
Procedural Meshコンポーネントの Use Complex as Simple Collisionのチェックを外します。

コンストラクタのノードを設定する
ProceduralMeshに対してCube情報をコピーしてCubeコンポーネントを削除します。

コピーしてきたレベルに作成したBPをおいてみました。

BP_UQ5_Playerを開いて

BladeMeshのOnConponentBeginOverlapをクリックしてノードを作ります。

これ動くのSet Simulate Physics だけだったので、結局

ファーストパーソン を追加

/Game/FirstPerson/Blueprints/BP_FirstPersonProjectile をコピーして

BP_ProceduralBulletとする

On Component Hit をこのように改造する

BP_UQ5_PlayerにBullet_Spawnのカスタムイベントを追加

通常攻撃をコンボにカスタムしてあるけど、こんな感じでSequenceでBullet_Spawnを呼ぶ

BP_ProceduralBulletの当たり判定がデカくなるようにスケールをデカくした

できたのがこちら

アンリアルクエスト5のDiscordでこのページを見た兎月さんがもっとすごい実装方法をしていたので許可を頂いたので、こちらに張らせていただきます
https://uq5.netlify.app/UE5-1-1_Cut_with_a_blade.png

兎月さんに感謝!できたのがこれ。

きもちいですねカットした法線どおりに切れると!

参考サイト

SkeltalMeshをカット?
https://www.unrealengine.com/marketplace/en-US/product/slice-skeletal-mesh-vr?sessionInvalidated=true