ぷちコン製作3 ChaosDestruction 使用編

この記事は約4分で読めます。

備忘録,壊れる塔を表現する手順.

塔を壊す,と言っているわけなので壊れているさまを表現しないとつまらない.
つまり貝を当ててただ単に塔が消えるのではダメで,塔が崩壊する様子が分からなければならない.

UE5でこれを実現するのは結構簡単で,新しい物理演算であるChaosを使えば,いい感じに崩れてくれて,断面も自動で補完してくれる.

ChaosDestructionの使い方はこちらの記事などを参考にしました.

プラグインでFieldSystemを有効にしたらさっそくメッシュのセットアップをしていきます.
セットアップするためにはビューポートでフラクチャモードにする必要があるのですがこれを探すのに地味に時間がかかりました.UE5では左上の選択モードからプルダウンで変えられます.

なんかいい感じにフラクチャを設定しGeometryCollectionとして保存すれば破壊可能メッシュとして扱うことができます.自動で動く球などをぶつけると期待通りに崩壊してくれます.

しかし,このままでは貝がぶつかった時に壊れるかは不確定なうえ,塔にCharacterとしてステータスを持たせた場合に,残りのHPに無関係に崩壊してしまう可能性があります.

またこのメッシュは結構繊細で初期状態で浮遊していたり,地面にめり込んでいたりすると,落下や半初作用によって簡単に崩壊してしまいます.画像左はわずかに地面にめり込んでいたため再生と同時に崩壊.

そこでできるだけ狙ったタイミングでの崩壊が起こるように手を加えます.今回はタワーカバー作戦にて解決することにしました.

Chaos破壊は外部からの衝撃によって発生するので,タワーに直接力を加えなければ崩壊することはありません.なので外側にBoxCollisionを配置し,タワーへの攻撃をこのBoxが受けることによってタワーに力が加わるのを防ぎます.このとき,BoxCollision は貝をブロックさせる必要がありますが,タワー本体とコリジョンする設定になっているとゲーム開始と同時に,Boxとタワーの反発作用で崩壊してしまいます.
そこでタワーとそのカバー用にCollisionPresetを新しく設定し,タワー同士のコリジョンは無視するようにしてあげることで自己崩壊を防いでいます.

ブループリントは超絶見にくいけれどもこんな感じ.簡単にまとめるとダメージ計算で塔のHPが0になったら,塔を壊すための力を加えるForceFieldをスポーンするというもの.Z座標にランダムを入れているので崩壊する力が加わる高さは貝が当たった位置には連動していない.しかし,効果音付きで割と豪快に崩れてくれるのでそこまで気にはならない.一応ダメージ量に応じて加わる力の強さも大きくはなっているはず.

下段の処理は塔を壊したことによる経験値取得の処理と残りの塔の数の計算.0になった場合はGameModeからGoal判定が起動する.

呼び出すFieldSystemはこのように組んだ.Z座標にランダム性をつけたからか,ダメージと力を比例させたからかたまにHPが0になっても崩壊してくれないこともある.出現ダメージ計算自体は塔の本体にあるので,崩壊しなくても塔は一定時間後に消滅して撃破扱いになるのでゲームプレイ上は問題ないが少し寂しい.かといって力を強めすぎると隣の塔まで勝手に崩れてしまうので調整が難しかった.
勝手にメッシュが崩れてしまっても塔の本体のHPはBoxが持っているので透明な塔にダメージを与えないとクリアにはならない.


今思うと,ランダムではなくOtherActorのTransformを引いてくれば普通に高さも取れた.しかしその場合は衝撃を受けたところよりもタワーの中心方向で力を発生させないとスカ率が上がってしまいそうなので一長一短だろうか.

コメント

タイトルとURLをコピーしました