Unityでオブジェクト同士の衝突を検知するために必要なのが「Collider」です。適切に設定することで、物理エンジンと連携し、ゲーム内での衝突判定やイベント発生をスムーズに管理できます。
この記事で学べること
- Colliderの基本的な役割と種類
- Colliderの設定と意味
- Rigidbodyとの関係と衝突判定の実装
- Colliderを活用したゲーム開発のテクニック
UnityのColliderの使い方
Collider(コライダー)は、オブジェクトの形状を定義し、物理エンジンが衝突を認識するためのコンポーネントです。見た目には影響しませんが、ゲーム内での衝突判定やトリガーイベントに不可欠な要素です。
Colliderの役割
- 物理演算を適用し、オブジェクトの衝突を検知
- 他のオブジェクトとの接触時にイベントを発生させる
- Rigidbodyと組み合わせることでリアルな物理挙動を実現
※ ColliderにはRigidbodyを使用することがほとんどなので以下のサイトも参考にしてください。
Colliderの基本設定
Colliderをオブジェクトに追加するには、以下の手順を行います。
- Hierarchy内のGameObjectを選択
- Inspectorで「Add Component」をクリック
- 「BoxCollider」 などの適切なColliderを追加

Colliderのプロパティ
Colliderプロパティ | 説明 |
---|---|
Center | Colliderの中心座標を調整 |
Size | 当たり判定のサイズを変更(BoxColliderの場合) |
Radius | 円柱形半径(SphereColliderやCapsuleColliderの場合) |
Height | 高さ(CapsuleColliderの場合) |
Convex | MeshColliderを凸形状として使用するか |
Colliderの種類と特徴
Unityには複数のColliderがあり、用途によって使い分ける必要があります。
基本的なColliderの種類
Collider名 | 特徴 | 用途例 |
---|---|---|
BoxCollider | 立方体の形状で衝突判定を行う | 箱や壁、床など |
SphereCollider | 球形の衝突判定を行う | ボールやキャラクターの頭部 |
CapsuleCollider | 円柱形の衝突判定を行う | キャラクターの全体的な当たり判定 |
MeshCollider | メッシュの形状に合わせた衝突判定 | 複雑な形状のオブジェクト |
WheelCollider | 車のホイール用の特別なCollider | レースゲームのタイヤ |
IsTriggerの使い方
Colliderには「isTrigger」というオプションがあります。
isTrigger = false
→ 物理的な衝突を発生させるisTrigger = true
→ 物理的な衝突なしに通過し、衝突イベントのみ検出
Colliderを用いた衝突判定の実装
Colliderを用いてオブジェクトが衝突した際にイベントを発生させる方法を紹介します。
※ Tagについては以下のサイトを参考にしてください。
① 物理的な衝突を検出(OnCollisionEnter)
//この方法は isTrigger = false の場合に使用します。
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Enemy")
{
Debug.Log("敵と衝突した!");
}
}
② トリガーによる衝突判定(OnTriggerEnter)
//isTrigger = true のColliderを持つオブジェクトが他のオブジェクトと接触した際にイベントが発生します。
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Item")
{
Debug.Log("アイテムを取得した!");
}
}
Colliderを活用したゲーム開発テクニック
① プレイヤーの攻撃判定を作る
攻撃用の判定にはTriggerを使用します。
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Enemy")
{
Destroy(other.gameObject);
Debug.Log("敵を倒した!");
}
}
② 地面との接触判定
キャラクターが地面にいるかどうかを判定するのに役立ちます。
bool isGrounded;
void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "Ground")
{
isGrounded = true;
}
}
void OnCollisionExit(Collision collision)
{
if (collision.gameObject.tag == "Ground")
{
isGrounded = false;
}
}
③ アイテムの取得
アイテムを取得する際にはisTriggerを活用します。
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Item"))
{
Destroy(other.gameObject);
Debug.Log("アイテム取得!");
}
}
まとめ
ColliderはUnityの物理エンジンを活用するために不可欠な要素であり、衝突判定やゲーム内イベントのトリガーとして幅広く使用されます。
- ColliderにはBoxCollider、SphereCollider、MeshColliderなど様々な種類がある
- isTriggerの設定で物理的な衝突とイベント検知を切り替え可能
- OnCollisionEnterやOnTriggerEnterを活用してゲーム内の衝突イベントを実装