UE4:被破壊メッシュを使用してアサルトライフルで壁を壊す。
非破壊メッシュテスト 数5000。倒れる時にFPS持っていかれるなぁ... https://t.co/MXcWCUm1k6
— ぶっさん (@Bussan_desu) January 21, 2016
非破壊メッシュ テスト 数1000。倒れた時にFPS持っていかれないのでこれかも知れない... https://t.co/uxrggfVhRr
— ぶっさん (@Bussan_desu) January 21, 2016
作ります。
まず被破壊メッシュを作成します。被破壊メッシュについてはまとめていただけている記事を・・・
物理-Destructible Mesh - UE4 Document@com04
今回は部分的に破壊します。そして大本の部分が動かないようにするために設定をいじります。
WorldSupportについてはこの記事を
Destructible Troubleshooting Guide - Epic Wiki
Gif画像があるのでわかりやすいと思います。
簡単に言うと
WorldSupportが大本の部分が動かなくなる
SupportDepthで部分破壊になります。
CellsiteCountで破壊の個数を指定することが出来ます。ただ壁を破壊して進むなどする場合は350あたりにしたほうがいいと思われます。コリジョンが反応しなくなったので。解決策は教えて下さい。
ブループリントインターフェース
次にBluePrintInterfaceを作成します。
ブループリントインターフェースについては
ブループリントインターフェースを作成したら関数を作成します。名前はDestroyにしました
インプットにVector変数を追加しておきます。名前はLocationにしました。
被破壊メッシュ側のブループリント
作成した非破壊メッシュをBlueprint化します。(右クリックからBlueprint化したほうがいいと思います。UE4.10でComponentから追加すると表示されないバグが発生したため)
先ほど作成したブループリントインターフェースを追加します。
次に先ほどブループリントインターフェース内で作成した関数を出します。
BPInterfaceを追加した後にコンパイルを実行しないと出てこないです。
次に被破壊メッシュを動作させるようにします。
ComponentからDestrucibleを出しAppleRadiusDamageを追加します。数値は以下の様で良い気がします。
設定コリジョンについて
デフォルトではDestructibleになっていますが、AllBlockにすると崩れ落ちやすくなりました。
Player側のブループリント
アサルトライフルの実装については以下の記事を見てください。
LineTracebyChannel後のBreakHitResultのHitActorからブループリントインターフェースないで作成した関数を出します。以下の画像では銃弾のパーティクルも追加しています。
これで完成です。
CellsiteCountの数を5000にすると一番上の動画のようになりますし、1000にすると2個めのようになります。
ただコリジョンを使っておきたければ350あたりがいいかと。
コリジョンあたりも分かり次第また記事にしようと思います。
以上。
訂正
非破壊メッシュではなく被破壊メッシュです。
うっかりしててこの間違いに気が付きませんでした。
非破壊メッシュでググってしまっていた方がいたら申し訳ありませんでした。