【Unity】Box Colliderのパラメータの紹介と、衝突を使った遊び

【Unity】Box Colliderのパラメータの紹介と、衝突を使った遊び

Colliderにも様々な種類があって、3Dだけでも6種類のColliderが用意されています。

今回はBox Colliderのパラメータを紹介しつつ、このColliderを使って遊んでみたいと思います。

 

環境

macOS 10.13 High Sierra

Unity2018.1.0f2

Colliderについて

Colliderって何? Colliderってどんな種類があるの? という疑問に答えようとしている記事はこちら。

ざっくり言うと、Unity世界で衝突を扱っているコンポーネントです。

これが無いと、すぃーっとオブジェクトを通り抜けたりします。

今回はその中でも基本的なBox Colliderを使って遊びます。

Box Collider
Box Collider

 

Box Colliderのパラメータ

Box Colliderは箱型のColliderで、テレビやタンス、ドア、冷蔵庫など、様々なオブジェクトのColliderとして適しています。

UnityでCubeオブジェクトを作った時にも、デフォルトでこのColliderが付いてくるので、多分みんながよく目にするコンポーネントです。

このコンポーネントのパラメータは以下の画像のようになっています。

BoxColliderのパラメータ
BoxColliderのパラメータ

 

Rigidbodyに比べると比較的パラメータの数も少ないので覚えやすいと思います。

それぞれについて簡単にご紹介。

Is Trigger

Is Triggerは、このColliderがトリガーかどうかを保持する設定です。trueでトリガーとして扱われ、falseで通常の衝突を行います。

Colliderをトリガーとして使う場合は、通常の物理的な衝突は行わず、このColliderが別のColliderと接触したことを検知します。

衝突はさせたくないけど、このオブジェクトと接触したことは知りたい、みたいな時に使います。例えばアクションゲームの復活ポイントだったり、落下検知のオブジェクトなどがそうですね。

接触を検知したことは、スクリプトからOnTriggerEnterなどの「OnTrigger」系メソッドで拾うことができます。

拾えるメッセージはスクリプトリファレンスに記載されています。

なお、このフラグがfalseの時はOnCollisionEnterなどの「OnCollision」系メソッドでメッセージを拾います。

「あれ? Collider付いてるのに衝突しないよ?」

って時にはこのIs Triggerがtureになっていることが原因だったりするので要確認です。初心者の頃は何度もやらかしました。

Material

物理特性マテリアルをセットすることができます。

物理特性マテリアルは、オブジェクトの摩擦力や反発係数を設定できるアセットのこと。

デフォルトだとボールなどを自由落下させた時にバウンドしないのですが、この物理特性マテリアルをColliderにセットしておくことでバウンドするようになります。

物体同士の衝突でも反発係数を使えるので、ぶっ飛び感を演出したいときに便利。

Center

このColliderの中心位置です。

Centerが(0, 0, 0)の場合は、TransformコンポーネントのPositionが中心となります。

Collider側で衝突する領域をずらせるので、オブジェクトのメッシュが表示されていない部分にもColliderを置くことが出来ます。

Colliderの位置をずらす
Colliderの位置をずらす

 

例えば、画面上で見えている姿と当たり判定が異なるボスとかが作れそう。

Size

Colliderの大きさを変えられます。

通常、TransformのScaleの値に応じてColliderも大きさを変えますが、メッシュの大きさを変えずにColliderの大きさを変えたい時に使えます。

若干大き目に当たり判定を使いたい! なんて時にいじるといいかも。

大きな当たり判定
大きな当たり判定

 

Edit Colliderの機能

パラメータの上の方に「Edit Collider」なるボタンがあります。

これを使うと、『Scene』ビューの中でColliderの大きさを変えることが出来ます。

Edit Collider
Edit Collider

 

各面の中心に小さな黒丸が表示されるので、それをドラッグ&ドロップすることで大きさを決めます。

操作によって変わった大きさは、CenterとSizeに反映されます。

BoxColliderで遊ぶ

とは言ったものの、何して遊びましょ?

やっぱりぶっ飛び感のある遊びかな。

RigidbodyとBox ColliderをアタッチしてあるCubeをいっぱい積み上げて、そこにボールをぶつけてみましょ。

Cubeが吹っ飛んだ
Cubeが吹っ飛んだ

 

派手にぶっ飛びました。Colliderがあるからこその動きですね。直接ボールがぶつかったところだけではなく、他のColliderにも力が伝播しています。

上記のCubeたちはPrefabをインスタンス化しているのですが、何となくColliderのサイズを大きくしてみたくなりました。

配置する位置はCubeのメッシュに合わせており、Colliderはそれより大きい状態です。つまりCollider同士が重なった状態でゲームを実行してみます。

氷炎爆花散!
氷炎爆花散!

 

見事に弾け飛びました。Collider同士が重なっていると、重ならない位置に動こうとします。それがインスタンス化されたCubeみんなでやるもんだから、結果として弾け飛ぶことに。

飛び散る様子がフレイザードの氷炎爆花散みたいだったので、インスタンス化する時に氷っぽいマテリアルと炎っぽいマテリアルをランダムにセットしてみました。

まとめ

Box Colliderのパラメータ紹介と、このColliderを使った遊びをお送りしました。

パラメータに関しては設定項目も少ないので分かりやすくていい感じ。

Collider同士の距離が近くなると排斥しようとする力を使って氷炎爆花散ごっこも出来たので満足です。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?