CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】Colliderの設定方法とよくあるFAQ
こんにちは!コチラの記事では、Collider についてのよくあるFAQを解決しながら、Collider について解説していきます。
Collider とは
「 Collider 」とは、以下2つの機能をゲームオブジェクトに持たせることができるコンポーネントです。
- 物理的な衝突を表現する機能。
- 「領域に接触」「領域に入り続けた」「領域から出た」を検出する機能。
「地面・壁・モノ」にぶつかるという表現や、「敵の攻撃」が当たったかどうかを検出する際に設定します。
Collider の設定方法
Collider の設定方法は、Collider を追加したいゲームオブジェクトを選択し、
Inspector →「 Add Component 」から、追加したい種類の「 Collider 」を選択することで、設定することができます。
Collider の種類
Collider は、3D用と2D用に分かれており、1つのオブジェクトに対し、3D用の Collider と2D用の Collider を併用することはできません。
以下、3D用の Collider と2D用の Collider を、それぞれ用途別に分類して紹介していきます。
3D用の Collider の種類
3D用の Collider は、以下3つに分類できます。
- 形状の Collider
- タイヤの Collider
- 地形の Collider
形状の Collider
形状の Collider は、「ゲームオブジェクトの形状」に沿った Collider を設定するのに使用します。
具体的には以下4つの種類の Collider が形状に沿った Collider を設定する際に使用されます。
- Sphere Collider
- Box Collider
- Capsule Collider
- Mesh Collider
画像は、左から「 Sphere Collider 」「 Box collider 」「 Capsule Collider 」「 Mesh Collider 」です。
「 Sphere Collider 」「 Box Collider 」「 Capsule Collider 」は、名前そのままの形状の Collider です。
「 Mesh Collider 」は、自分で作成したメッシュの形状をそのまま Collider として使うことができます。
しかし「 Mesh Collider 」を使用すると、ポリゴン数が多い場合には処理負荷が重くなるため
メッシュに対して適宜「 Sphere Collider 」「 Box collider 」「 Capsule Collider 」を組合わせたりなどして、大まかにコライダーを設定した方がゲームの処理負荷が軽くなります。
タイヤの Collider
タイヤのColliderは、Collider の通常の機能(衝突の表現・検知)に加えて、タイヤの摩擦・質量・サスペンションなど、タイヤの物理的な設定をすることができます。
タイヤ以外にも使用可能な Collider ですが、ホイールのある車両を想定して設計されているので、専らタイヤのついた車を走らせる際に使用されます。
タイヤの Collider を設定する際は、以下の Collider を使用します。
- Wheel Collider
地形の Collider
Unity には、「 Terrain 」という地形を作ることができる Game Object があります。
地形のCollider は、その「 Terrain 」で設定した地形をそのまま Collider にすることができます。
地形の Collider を設定する際は、以下の Collider を使用します。
- Terrain Collider
2D用の Collider の種類
2D用の Collider は、以下3つに分類できます。
- 形状の Collider
- タイルマップ用の Collider
- 複数の Collider を結合するための Collider
形状の Collider
2Dにおける形状の Collider も、3Dにおける形状の Collider と同様に、「ゲームオブジェクトの形状」に沿った Collider を設定するのに使用します。
具体的には以下6つの種類の Collider が2D上で、形状に沿った Collider を設定する際に使用されます。
- Box Collider 2D
- Capsule Collider 2D
- Circle Collider 2D
- Custom Collider 2D
- Edge Collider 2D
- Polygon Collider 2D
タイルマップ用の Collider
2Dタイルマップを使用してゲームを作っている場合に、使用する Collider です。
- Tilemap Collider 2D
複数の Collider を結合するための Collider
複数の Collider を結合して1つの Collider に変換することができます。
- Composite Collider 2D
Collider についてよくあるFAQ
Collider で当たり判定をつけるには?
当たる・跳ねる・摩擦するなどの「当たり判定」を表現するためには、Collider の設定に加えて、Rigidbody の設定をする必要があります。
まず当たり判定をつけたい Game Object の両方に、 Collider の設定がされていることを確認しましょう。
当たり判定をつけたい Game Object の両方に、 Collider の設定がされていることを確認できたら、いずれか一方に、Rigidbody を設定します。
Rigidbody は、Game Object を選択し、Inspector → Add Component →「 Rigidbody 」から設定することができます。
Rigidbody を設定することにより、当たり判定を Game Object につけることができます。
Rigidbodyとは、Game Object に物理的な特性を付け加えることができるコンポーネントです。
Rigidbody の設定をすることで、Game Object に重力や質量の設定をすることができるようになります。
そのような物理的な特性が付け加えられるからこそ、当たり判定を実現することができます。
当たり判定は、上記の Rigidbody の設定に加えて、スクリプトで設定する必要があるので、
スクリプトに関しては、【Unity】『当たり判定』の設定方法を詳しく解説!の記事を参考にしてみてください。
Is Trigger の設定方法は?
Is Triggerは、 Game Object の Inspector → Collider を選択し、「 Is Triger 」にチェックを入れることで設定することができます。
「 Collider 」には、物理的な衝突を表現する機能と「領域に接触」「領域に入り続けた」「領域から出た」を検出する機能があると冒頭で説明しましたが、
Collider の 「 Is Trigger 」 を設定することによって、物理的な衝突の表現をしなくなり、検出する機能のみを有するようになります。
そうすることによって、トリガーとして Collider を使用することができるようになります。
トリガーは、上記の「 Is Trigger 」の設定に加えて、スクリプトで設定する必要があるので、
スクリプトに関しては、【Unity】『トリガー』の設定方法を詳しく解説!の記事を参考にしてみてください。
Collider をつけてもすり抜けるとき・反応しないときは?
Colliderをつけてもすり抜けるとき・反応しないときに考えられる原因は3つあります。
- 「 Rigidbody 」の設定がされていない
- 「 Is Triger 」にチェックが入っている
- オブジェクトのスピードが速すぎる
「 Rigidbody 」の設定がされていない
当たる・跳ねる・摩擦するなどの「当たり判定」を表現するためには、Collider の設定に加えて「 Rigidbody 」の設定が必要です。
Rigidbody の設定をせずに、 Collider だけを設定している場合は、そのまますり抜けてしまうので、設定されているかを確認しましょう。
「 Is Triger 」にチェックが入っている
Collider の 「 Is Trigger 」にチェックが入っていると、物理的な衝突の表現をしなくなり、検出する機能のみを有するようになります。
そのためオブジェクト同士の衝突の表現がされなず、そのまますり抜ける・反応しないといった事態に陥ります。
オブジェクトのスピードが速すぎる
オブジェクトのスピードが速すぎる場合にも、すり抜けてしまうことがあります。
その場合には、以下2通りの調整方法があります。
- オブジェクトのスピードを落とす
- Collision Detection(衝突の検知の方法)の変更
スピードを落とすことがゲームの表現上問題がない場合、スピードを落とすことによって対処することができます。
ゲームの表現上スピードを落とすことができない場合は、Collision Detection(衝突の検知の方法)を変更する必要があります。
Collision Detection(衝突の検知の方法)については、Game Object を選択し、Inspector → Rigidbody →「 Collision Detection 」で変更できます。
Collision Detection(衝突の検知の方法)は、デフォルトの設定の場合「 Discrete 」となっていますが、
衝突する相手のオブジェクトが動いていない場合には、「 Continuous 」、
衝突する相手のオブジェクトが動いている場合には、「 Continuous Dynamic 」「 Continuous Speculative 」に設定しましょう。
衝突の検知の方法を「 Continuous 」「 Continuous Dynamic 」「 Continuous Speculative 」に変更した場合、
デフォルトの設定の「 Discrete 」よりも処理負荷が多くかかり、ゲームが重たくなってしまうので注意が必要です。
1つの Object に Collider を複数つける方法は?
Collider が設定されている Game Object を複数用意し、空の Game Object を親として、親子付けをします。
空の Game Object には、Rigidbodyを設定しましょう。
そうすることで複数の Collider を1つのObject として、設定することができます。
Collider を可視化するには?
左上のタブ Window → Analysis → Physics Debugger を選択します。
シーンビューの画面右下に表示される「 Physics Debug 」の「 Collision Geometry 」にチェックを入れると、Collider を可視化することができます。
2Dで当たり判定をする方法は?
3Dと同じく、Collider の設定と Rigidbody の設定をします。
Collider の設定方法は、Collider を追加したいゲームオブジェクトを選択し、Inspector →「 Add Component 」から、追加したい2D用の「 Collider 」を選択します。
Rigidbody は、Game Object を選択し、Inspector → Add Component →「 Rigidbody 2D」から設定することができます。
まとめ
- Collider は物理的な衝突を表現する機能と「領域に接触」「領域に入り続けた」「領域から出た」を検出する機能をゲームオブジェクトに持たせることができる。
- Collider は Add Component から、追加したい種類の「 Collider 」を選択することで、設定することができる。
- 3D用の Collider は、形状・タイヤ・地形の Collider に分類できる。
- 2D用の Collider は、形状・タイルマップ・結合の Collider に分類できる。
- Collider で当たり判定をつけるには、Rigidbody の設定をする必要がある。
- Is Triggerは、「 Is Triger 」にチェックを入れることで設定することができる。
- Collider をつけてもすり抜けるとき・反応しないときに考えられる原因3つ
- 「 Rigidbody 」の設定がされていない
- 「 Is Triger 」にチェックが入っている
- オブジェクトのスピードが速すぎる
- 1つの Object に Collider を複数つけるには、Collider を設定した Game Object と空の Game Object を親子付けし、親である空の Game Object にRigidbodyを設定する。
- Collider を可視化するには「 Physics Debug 」の「 Collision Geometry 」にチェックを入れる。
- 2Dで当たり判定をするには、2D用の「 Collider 」と「 Rigidbody 2D」を設定する。
Unity用アセット販売中!
当メディアで運営しているアセットショップ「NickNackHolic」にてUnity用のアセットを販売しております。
ゲーム制作やVRchat、Clusterなどで使用できる便利なアセットを販売しております。
一部無料のアセットもあるので、ぜひ覗いてみてください!
Nick Nack Holic
VRchatやゲームアセット、映像作品で使える「雑貨」を販売中