Unity 6のCollider 2D入門:種類の選び方とRigidbody 2D・Is Triggerの違い
「床を置いたのにキャラクターがすり抜ける」「Colliderを付けたのに落下しない」。Unityの物理を学び始めたときは、見た目と当たり判定、動きの役割が混ざりがちです。
この記事ではUnity 6.0(6000.0)の2D物理を対象に、Collider 2Dの種類と、Rigidbody 2D、Is Triggerとの違いを整理します。Inspectorの英語表記で説明します。
Collider 2Dは「当たり判定の形」
Sprite Rendererが画面に絵を表示するのに対し、Collider 2Dは、そのオブジェクトのどこを当たり判定として扱うかを定義します。絵を表示しただけでは、床や壁との物理的な衝突は設定されません。
Colliderは通常のゲーム画面には表示されない形です。見た目と当たり判定の形は必ずしも同一ではなく、プレイしやすさを考えて少し単純化する設計もできます。まずはオブジェクトに近い形から選びましょう。
よく使う4種類のCollider 2D
| コンポーネント | 当たり判定の形 | 選ぶ場面の例 |
|---|---|---|
| Box Collider 2D | 四角形・長方形 | 箱、床、四角い壁 |
| Circle Collider 2D | 円 | ボール、丸いアイテム |
| Capsule Collider 2D | 両端が丸いカプセル形 | 丸みのある縦長のキャラクター |
| Polygon Collider 2D | 頂点で定義する多角形 | 単純な四角や円では表しにくい岩など |
最初から細かい輪郭を追う必要はありません。「四角に近いか、円に近いか、カプセル形で十分か」を考え、足りないときに多角形を検討すると整理しやすくなります。これは形の選び方の目安であり、特定のゲームでの性能を保証するものではありません。

Rigidbody 2Dとは何が違う?
Collider 2Dは形、Rigidbody 2Dは物理的な動きを扱います。例えば落ちる箱にはBox Collider 2Dと、Body TypeがDynamicのRigidbody 2Dを組み合わせます。
動かさない床にはBox Collider 2Dだけを付ける構成にできます。Rigidbody 2DがないCollider 2Dは、内部的に静的なボディに結び付けられます。「すべての床にもRigidbody 2Dを追加する必要がある」と考えなくて大丈夫です。
Inspectorでは「Rigidbody 2D」、スクリプトのクラス名では「Rigidbody2D」と書きます。同じくCollider 2Dは各種2Dコライダーの総称で、スクリプトの基本クラス名はCollider2Dです。
Is Triggerは「通り抜けながら検知する」ための設定
Collider 2DのIs Triggerを有効にすると、そのコライダーは通常の押し返しや床として支える接触の代わりに、トリガーとして扱われます。アイテムの取得範囲やチェックポイントの検知領域などに使えます。
ただし、チェックを付けるだけでアイテムが自動取得されるわけではありません。 検知後の処理は、OnTriggerEnter2Dなどを受け取るスクリプトで別途実装します。2Dのトリガーイベントには、関係するコライダーの少なくとも片方にRigidbody2Dが付いていることが必要です。両者の接触がレイヤー設定などで除外されていないことも確認します。
普通の床として止めたいなら、床のIs Triggerは無効にします。「触れたことを知りたいが、通り抜けさせたい」ならトリガーを検討します。
箱と床を作って、当たり判定を確認する
既存の制作プロジェクトを変更せず、新しいUnity 6.0の2Dプロジェクトで試してください。Squareの作成には2D Spriteパッケージが必要です。
- GameObject > 2D Object > Sprites > Squareで四角形を作り、名前をBoxにします。TransformのPositionを(0, 2, 0)、Scaleを(1, 1, 1)にします。
- InspectorのAdd ComponentからBox Collider 2DとRigidbody 2Dを追加します。すでに付いている場合は重複させません。
- Rigidbody 2DのBody TypeをDynamic、Simulatedを有効、Gravity Scaleを1にします。Constraints > Freeze PositionのYはチェックを外します。
- もう一つSquareを作り、名前をFloorにします。Positionを(0, -2, 0)、Scaleを(6, 1, 1)にし、Box Collider 2Dを追加します。床にはRigidbody 2Dを追加しません。両方のBox Collider 2DのIs Triggerを無効にします。
- Edit > Project Settings > Physics 2Dを開きます。この練習ではGeneral SettingsのGravityをX=0、Y=-9.81に指定します。両オブジェクトをDefaultレイヤーにし、Layer Collision MatrixでDefault同士の接触を有効にします。Layer Overridesは各Collider 2DのInspectorにある設定で、この練習では独自の接触レイヤーの上書きは使いません。ここでの数値は練習用の指定値です。
- 再生して箱が落下し、床で止まるか確認します。画面外で見えない場合はSceneビューでBoxを選び、InspectorのTransform > PositionのYの変化を見ます。
- 再生を終了し、床のIs Triggerを有効にしてから再生し直します。床が箱を支えず、通り抜けることが期待されます。この練習にはイベント処理のスクリプトがないため、Consoleに検知ログは出ません。
この手順は公式資料をもとにした確認用の構成です。Unity Editorでの実動作検証は未実施です。別の6000.x系を使う場合は、その版でメニューと動作を確認してください。
当たらない・通り抜けるときの確認先
- 見た目だけでなく、双方に適切なCollider 2Dがあるか。
- 床として使うCollider 2DのIs Triggerが無効か。
- 動かす箱のRigidbody 2DがDynamicで、Simulatedが有効か。
- ColliderのSize・Offsetなどが見た目と適切に対応しているか。
- Physics 2DのLayer Collision Matrixや、Layer Overridesで接触を除外していないか。
- 3D用のBox ColliderやRigidbodyを誤って使っていないか。
2Dと3Dの物理は別の仕組みです。Collider 2Dと3D用Colliderの間で同じ衝突として扱われると考えず、この記事の構成ではコンポーネント名に「2D」があるものをそろえます。
形をCollider 2D、動きをRigidbody 2D、通り抜けながらの検知をIs Triggerと整理すると、どの設定を確認すればよいか判断しやすくなります。
参考資料(Unity 6.0公式)
- Collider 2D
- CapsuleCollider2D
- Box Collider 2D
- Dynamicボディタイプ
- 静的ボディの扱い
- OnTriggerEnter2D
- 2Dプリミティブ作成
- Physics 2D設定









ディスカッション
コメント一覧
まだ、コメントがありません