この記事について
この記事ではColliderの種類・設定・isTrigger・衝突イベントについて学べます。
この記事で学べること
- Colliderの基本的な役割と種類
- Colliderの設定と意味
- Rigidbodyとの関係と衝突判定の実装
- Raycastを用いた当たり判定
UnityのColliderとは?
Collider(コライダー)とはUnityでオブジェクトに「当たり判定」を持たせるためのコンポーネントです。
見た目には表示されませんが、「物理エンジンに形状を伝える役割」を持っています。
ゲームでは「キャラが地面に立つ」「弾が敵に当たる」「プレイヤーがアイテムを拾う」など、ほぼすべての判定にColliderが使われています。
UnityのColliderの使い方
Collider(コライダー)はオブジェクトの形状を定義し、物理エンジンが衝突を認識するためのコンポーネントです。見た目には影響しませんが、ゲーム内での衝突判定やトリガーイベントに不可欠な要素です。
- 物理演算を適用し、オブジェクトの衝突を検知
- 他のオブジェクトとの接触時にイベントを発生させる
- Rigidbodyと組み合わせることでリアルな物理挙動を実現
※ ColliderにはRigidbodyを使用することがほとんどなので以下のサイトも参考にしてください。
Colliderの基本設定
Colliderをオブジェクトに追加するには、以下の手順を行います。
- Hierarchy内のGameObjectを選択
- Inspectorで「Add Component」をクリック
- 「BoxCollider」 などの適切なColliderを追加

基本的なColliderの種類
Collider名 | 特徴 | 用途例 |
---|---|---|
BoxCollider | 立方体の形状で衝突判定を行う | 箱や壁、床など |
SphereCollider | 球形の衝突判定を行う | ボールやキャラクターの頭部 |
CapsuleCollider | 円柱形の衝突判定を行う | キャラクターの全体的な当たり判定 |
MeshCollider | メッシュの形状に合わせた衝突判定 | 複雑な形状のオブジェクト |
WheelCollider | 車のホイール用の特別なCollider | レースゲームのタイヤ |
Colliderのプロパティ
Colliderプロパティ | 説明 |
---|---|
Center | Colliderの中心座標を調整 |
Size | 当たり判定のサイズを変更(BoxColliderの場合) |
Radius | 円柱形半径(SphereColliderやCapsuleColliderの場合) |
Height | 高さ(CapsuleColliderの場合) |
Convex | MeshColliderを凸形状として使用するか |
IsTriggerの使い方
Colliderには「isTrigger」というオプションがあります。
isTrigger = false
→ 物理的な衝突を発生させるisTrigger = true
→ 物理的な衝突なしに通過し、衝突イベントのみ検出
Colliderを用いた衝突判定の実装
物理的に衝突したとき(OnCollisionEnter)
物理的な衝突検出(isTrigger=Off)の時に使用するのが「OnCollisionEnter」です。
今回は2つのCubeを用意して両方にBoxCollider、一方にRigidbodyと「Enemy」タグを付けています。
using UnityEngine;
public class Collider_isTrigger : MonoBehaviour
{
//この方法は isTrigger = false の場合に使用します。
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Enemy")
{
Debug.Log("敵と衝突した!");
}
}
}
実行してみると、衝突判定がうまくいってますね。
※ Tagについては以下のサイトを参考にしてください。
すり抜け判定(OnTrigger)
すり抜け判定は「OnTriggerEnter」、「OnTriggerStay」、「OnTriggerExit」を使用します。
using UnityEngine;
public class Collider_isTrigger : MonoBehaviour
{
//isTrigger = true のColliderを持つオブジェクトが他のオブジェクトと接触した際にイベントが発生します。
private void OnTriggerEnter(Collider other)
{
Debug.Log(other.name + " が入った!");
}
private void OnTriggerStay(Collider other)
{
Debug.Log(other.name + " が中にいる");
}
private void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " が出た!");
}
//移動用
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * Time.deltaTime * 5f;
}
}
}
実行してみると、大きいCube内に入ったとき、入っている際中、出た時で呼び出されてますね。
Raycastを用いたオブジェクト、距離判定
Colliderを用いたオブジェクトは前項までのような判定もできますが、Rayと呼ばれる見えない線を飛ばして判定することもできます。
まとめ
ColliderはUnityの物理エンジンを活用するために不可欠な要素であり、衝突判定やゲーム内イベントのトリガーとして幅広く使用されます。
- ColliderにはBoxCollider、SphereCollider、MeshColliderなど様々な種類がある
- isTriggerの設定で物理的な衝突とイベント検知を切り替え可能
- OnCollisionEnterやOnTriggerEnterを活用してゲーム内の衝突イベントを実装