Unityでオブジェクトを撃って壊す

投稿者: | 2020-01-07


小さなCube同士をジョイントでつなげて、銃で撃つと壊れる大きなCubeを作ります。

まず小さいCubeをジョイントでつなげてみます。

どちらもBoxコライダーとRigidbodyが付いています。

白いCubeは落下せず、力を加えても動きません。

オレンジのCubeはデフォルトの設定なので落下しますし、銃で撃つと飛んでいきます。

オレンジのCubeにはFixed Jointを付けます。

Connecterd Bodyに、Rigidbodyの付いたオブジェクトをドラッグアンドドロップすると、そのRigidbodyにこのオレンジのCubeがくっつきます。ここでは白いCubeをアタッチします。
Break ForceとBreak Torqueには、ジョイントが破壊されるために必要な力と回転を設定できます。

デフォルトは無限大なのでいくら力を加えても動きません。

適当な値を入れて、当たりどころによってCubeが吹っ飛ぶようにしました。

Fixed Jointを使ってオブジェクトをつなげていくこともできます。

大きなCubeを作る

このオレンジのCubeをプロジェクトにドラッグアンドドロップしてプレハブ化しました。

シーンに一つ置いて、Ctrl + D で複製して横に並べていきます。

Ctrlキーを押しながら移動すると、1単位ずつ移動できます。Cubeのサイズが1なので隙間なく並べられます。

複製して横にずらしたら、もとのCubeをFixed JointのConnecterd Bodyにアタッチするというのを繰り返してみます。

複数のCubeを複製しても、隣同士の結合の関係は同じです。

例えば、一括で複製した内のBlock(9)というCubeのFixed Jointには、一番最初のCubeではなくBlock(8)というCubeがアタッチされています。

これは一つ前のCubeです。

複数選択して複製していけばすぐに終わります。

この位置のCubeだけ、下のCubeとつなげてみます。

この大きなCubeを銃で撃ってみると、強い力が加わった部分は吹っ飛びますが、その周囲では小さいCube同士が結合を保っています。

ジョイントの設定を一括で変更する

小さいCubeのプレハブの値を変更すると、全てのオレンジのCubeの値が一括で変わります。

ジョイントが破壊される力の強さや、Cubeの質量などを変えると様々に挙動を変えます。

結合されていない面があると不自然なので、CubeのプレハブにFixed Jointを追加して、面同士が重なっている部分を全て結合してみます。

これで、複数のCubeがまとまって動きながら少しずつ崩れていきます。

一つのオブジェクトを銃で撃つと勢いよく飛んでいって瞬時に消えてしまうので不自然ですが、複数のオブジェクトに分けてジョイントで?げると自然に壊すことができます。

コメントを残す

メールアドレスが公開されることはありません。