【Unity】Colliderってどんな種類があるの? ってときに読む記事【解説】
Unityでオブジェクトに物理的な運動をさせるときに欠かせないのはRigidbodyですが、そのRigidbodyを使う上でさらに欠かせないのがCollider(コライダー)です。
いわゆる当たり判定を検知してくれるColliderがなければ、地面すらもすり抜けてしまいます。
Colliderはオブジェクトの形に応じて様々な種類が用意されていますが、それを一覧でご紹介。
環境
macOS 10.13 High Sierra
Unity2018.1.0f2
Colliderについて
Colliderは、日本語に訳せば「衝突装置」かな。物体の衝突に関わる機能です。
詳細については、Unityのマニュアルをご覧あれ。ここではざっくりと紹介します。
Unity世界では、このColliderがないと衝突を検知してくれないので、あっさり物体がすり抜けてしまいます。そう、地面でさえも。
初心者が作ったゲームで発生するすり抜けの7割はこのColliderがついていないことが原因です。でも3DオブジェクトのCubeだったり、Sphereを作ったときには自動的にこのColliderも作ってくれるので、つけ忘れはそうそうないかも。
自分で3Dモデルをインポートしたときには忘れがちなので注意です。
トリガーとして使う
衝突を検知するだけでなく、単純に当たり判定だけを使うことも可能です。
例えば、アクションゲームでステージから落下した際、空中のある地点で落下判定を行ったりします。このとき、透明のオブジェクトに当たってそこで止まってしまったら、ちょっと変。
そんなときはColliderをトリガーとして使うのがベネ。
空中のある地点にColliderを配置し、接触したかどうかだけを検知することができます。判定だけ行なってオブジェクト自体はすり抜けます。
接触の検知によってOnTriggerEnterなどのメソッドを呼び出せるので、これまた便利。
Colliderの種類
Unityの物理演算には2Dと3Dがありますが、ここでは3Dを扱います。
名前 | 説明 |
Box Collider | 箱型のColliderです。立方体だけではなく、直方体にしたり、薄型の箱にしたりと、結構応用がきくColliderです。 |
Capsule Collider | カプセル型のColliderです。薬のカプセルを思い浮かべてもらうといいかも。 |
Sphere Collider | 球の形をしたColliderです。ボールなどに使うといい感じ。楕円にはできないので、球形を拡大・縮小して使います。 |
Mesh Collider | メッシュに合わせたColliderです。自分でインポートした3Dオブジェクトのメッシュを指定すると、その形にColliderを表示します。 |
Wheel Collider | 車のタイヤ型のColliderです。Colliderでありながら、タイヤの質量だったり、進行方向への摩擦だったりと、物理的なパラメータが含まれます。 |
Terrain Collider | 地形用Colliderです。Unityには地形を編集できるTerrain Engin(テラインエンジン)が搭載されており、そこで作成した地形に応じてColliderを生成します。 |
3Dの範囲だと上記の6種類があります。
特殊なのは下2つかな。あとはイメージしやすいと思います。
Box Collider
箱型のColliderです。3DオブジェクトのCubeを作成したときに、一緒についてきます。
箱型なので扱いやすく、複合Colliderを作るときにもこのBox Colliderを組み合わせると簡単。
X, Y, Zそれぞれの軸で伸縮が可能なので、立方体だけでなく直方体なども表現できます。ドアとか板のように薄いオブジェクトでも使えます。
Capsule Collider
カプセル型のColliderです。3DオブジェクトのCapsuleを作ると一緒についてきます。
ポールかと銃弾で使いやすい形。球の半径や高さは別々に変えられるので、これも複合Colliderで組み合わせやすい形をしています。
Sphere Collider
球体のColliderです。3DオブジェクトのSphereを作ると一緒についてきます。
見ての通りボールに適しています。キャラクターがカービィみたいに球体ならば、このColliderをアタッチしておけばOK。
ざっくりとSphere Colliderで、みたいな考えもありだと思います。
Mesh Collider
Mesh Colliderは、メッシュを指定できるColliderです。上記の画像では、QuadオブジェクトのColliderを表示しています。
3Dモデルをインポートした際には、そのメッシュを指定することができます。
正確に衝突を検知したいときにはぜひMesh Colliderを。
ただ、正確さと引き換えにパフォーマンスが犠牲になるのは世の常。使いすぎると結構重くなります。
ざっくりでよければ、複合ColliderでBoxやSphereを組み合わせた方がいい場合もあります。Colliderは画面に表示されませんからね。
Wheel Collider
タイヤのColliderです。画像では、4つのタイヤがWheel Colliderになっています。中央のBox Colliderは車体。
他のColliderと違って、地面側に丸っこいものがついていたり、中央あたりにオレンジの縦線が入っていたりと特殊な感じが出ています。
コンポーネントではタイヤの質量やトルク、ハンドルの向きを設定できたりと、物理的な制御も含むコンポーネントになっています。
Wheel Colliderについてはマニュアルの中でチュートリアルも用意されているので、こちらもご覧あれ。
Terrain Collider
Terrain Colliderは、UnityのTerrain Engineで作られた地形に対応するColliderです。フレーム表示ができなかったので上の画像はTerrainオブジェクトになっています。
Terrainはいじってるとめっちゃ楽しい機能で、3分くらいでいい感じの地形が作れる上に、簡単にテクスチャまで貼れます。上の白いオブジェクトにテクスチャを貼ると以下のようになります。
なんかもうTerrainの説明というかダイマになってますが、このTerrainの形に合わせて衝突を検知してくれるのがTerrain Colliderです。
この複雑な地形に対して、自分でColliderを用意しろと言われたら泣くしかない。あってよかったTerrain Collider。
まとめ
物理演算と切っても切れない存在であるCollider。その一覧をご紹介しました。
Unityがデフォルトで用意しているオブジェクトではそのColliderも用意してくれていますが、自分でメッシュを作ったときには忘れずに。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】RigidbodyのConstraints(制限)を変えて実験 2018.05.17
-
次の記事
【Unity】せっかくチュートリアルがあるのでWheel Colliderで遊んでみる 2018.05.21
コメントを書く