僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:被破壊メッシュを使用してアサルトライフルで壁を壊す。

 

f:id:Bussan_dayo:20160121234617p:plain

 

 

 

作ります。

まず被破壊メッシュを作成します。被破壊メッシュについてはまとめていただけている記事を・・・

物理-Destructible Mesh - UE4 Document@com04

 

今回は部分的に破壊します。そして大本の部分が動かないようにするために設定をいじります。

 

 

f:id:Bussan_dayo:20160121232324p:plain

 

WorldSupportについてはこの記事を

Destructible Troubleshooting Guide - Epic Wiki

 

 Gif画像があるのでわかりやすいと思います。

 

簡単に言うと

WorldSupportが大本の部分が動かなくなる

SupportDepthで部分破壊になります。

 

CellsiteCountで破壊の個数を指定することが出来ます。ただ壁を破壊して進むなどする場合は350あたりにしたほうがいいと思われます。コリジョンが反応しなくなったので。解決策は教えて下さい。

 

ブループリントインターフェース

次にBluePrintInterfaceを作成します。

ブループリントインターフェースについては

docs.unrealengine.com

 

ブループリントインターフェースを作成したら関数を作成します。名前はDestroyにしました

インプットにVector変数を追加しておきます。名前はLocationにしました。

f:id:Bussan_dayo:20160121233114p:plain

 

 

被破壊メッシュ側のブループリント

作成した非破壊メッシュをBlueprint化します。(右クリックからBlueprint化したほうがいいと思います。UE4.10でComponentから追加すると表示されないバグが発生したため)

 

先ほど作成したブループリントインターフェースを追加します。

f:id:Bussan_dayo:20160121233325p:plain

 

 

次に先ほどブループリントインターフェース内で作成した関数を出します。

f:id:Bussan_dayo:20160121233458p:plain

BPInterfaceを追加した後にコンパイルを実行しないと出てこないです。 

 

次に被破壊メッシュを動作させるようにします。

ComponentからDestrucibleを出しAppleRadiusDamageを追加します。数値は以下の様で良い気がします。

f:id:Bussan_dayo:20160121233607p:plain

 

設定コリジョンについて

デフォルトではDestructibleになっていますが、AllBlockにすると崩れ落ちやすくなりました。

 

 

Player側のブループリント

アサルトライフルの実装については以下の記事を見てください。

 

unrealbussan.hatenablog.com

 

LineTracebyChannel後のBreakHitResultのHitActorからブループリントインターフェースないで作成した関数を出します。以下の画像では銃弾のパーティクルも追加しています。

f:id:Bussan_dayo:20160121234002p:plain

 

 

これで完成です。

 

CellsiteCountの数を5000にすると一番上の動画のようになりますし、1000にすると2個めのようになります。

ただコリジョンを使っておきたければ350あたりがいいかと。

 

コリジョンあたりも分かり次第また記事にしようと思います。

 

以上。

 

 

訂正

非破壊メッシュではなく被破壊メッシュです。

うっかりしててこの間違いに気が付きませんでした。

非破壊メッシュでググってしまっていた方がいたら申し訳ありませんでした。