Collider ( 콜라이더 )
Collider 는 유니티에서 물리 충돌 ( Physics Collision ) 을 감지하기 위한 보이지 않는 경계이다.
오브젝트의 모양이 아니라 물리적으로 어디까지 충돌로 인식할지를 정의하는 컴포넌트이다.
역할
- 충돌 감지 ( Detection ) : 두 개의 Collider 가 맞닿으면 Unity 의 물리엔진이 충돌 이벤트를 계산한다
- 충돌 처리 ( Response ) : Rigidbody 가 포함되어 있다면 , 충돌 시 반응 ( 튕김 , 멈춤 등 )을 실제로 적용한다.
- 트리거 감지 ( Trigger ) : isTrigger 를 켜면 물리 반응 없이 충돌 진입 / 이탈 이벤트만 감지할 수 있다.
└ OnTriggerEnter , OnTriggerExit , OnTriggerStay
콜라이더의 주요 종류
| 종류 | 특징 | 사용 예시 |
| Box Collider | 직융면체 형태의 충돌 영역 | 박스 , 문 , 벽 |
| Sphere Collider | 구형 충돌 영역 | 공 , 폭탄 , 캐릭터 주변 |
| Capsule Collider | 원통 + 양끝 구 형태 | 사람형 캐릭터 충돌 처리 |
| Mesh Collider | 모델의 실제 형태를 충돌로 사용 | 복잡한 오브젝트 ( 건물 , 바위 등 ) |
| 2D Collider | 2D 게임 전용 ( BoxColider2D , CircleCollider2D 등 ) | 2D 플랫폼 , 슈팅 게임 |
Rigidbody 와의 관계
- Rigidbody : 물리 연산 ( 중력 , 질량 , 속도 ) 을 담당
- Collider : 물리 충돌 영역을 담당
두 개가 함께 있을 때 실제 물리적 움직임과 충돌 반응이 발생한다
| Collider 만 존재할 때 | 단단한 벽처럼 작동 ( 움직이지 않는다 ) |
| Collider + Rigidbody | 물리적으로 움직이고 , 다른 물체와 상호작용 |
| Collider( isTrigger ON ) | 통과는 가능하지만 충돌 이벤트 감지 가능 |
트리거와 충돌 이벤트
| 이벤트 | 설명 |
| OnCollisionEnter( ) | 다른 Collider 와 처음 충돌했을 때 호출 |
| OnCollisionStay( ) | 충돌 중일 때 계속 호출 |
| OnCollisionExit( ) | 충돌이 끝났을 때 호출 |
| OnTriggerEnter( ) | Trigger Collider 에 들어갔을 때 호출 |
| OnTriggerStay( ) | Trigger 안에 머무는 동안 호출 |
| OnTriggerExit( ) | Trigger에서 나왔을 때 호출 |
주의할 점
- MeshCollider는 너무 복잡하면 성능에 악영향을 준다.
단순한 Primitive Collider 로 대체하는 것을 권장한다. - isTrigger를 켜면 물리 충돌은 사라지고 , 감지만 가능하다
- 2D 물리엔진은 3D 물리엔진과 완전히 별개이므로 BoxCollider2D 와 BoxCollider 는 서로 인식하지 않는다.
▼예시 코드
using UnityEngine;
public class CollisionExample : MonoBehaviour
{
void OnCollisionEnter(Collision collision)
{
Debug.Log("충돌한 객체: " + collision.gameObject.name);
}
void OnTriggerEnter(Collider other)
{
Debug.Log("트리거 안에 들어온 객체: " + other.name);
}
}

▲ Unity Box Collider 컴포넌트의 Inspector 창
각 항목은 충돌 영역의 모양 , 감지 방식 , 물리 재질 , 그리고 레이어 필터링을 제어한다
Edit Collider
- 콜라이더의 형태를 편집할 수 있게 해주는 버튼이다
- 이 버튼을 누르면 씬 뷰 에서 녹색 박스 핸들이 나타나고 , 마우스로 크기와 위치를 시각적으로 조정할수 있다
isTrigger
- 체크하면 충돌을 감지하지만 물리적인 반응은 하지 않는다
- 통과는 가능하지만 이벤트 감지는 가능하다
( 플레이어가 코인을 지나가면 획득 이벤트만 발생시키고 싶을 때 )
void OnTriggerEnter(Collider other)
void OnTriggerExit(Collider other)
Provides Contacts
- Unity 2022 이후 버전에서 추가된 옵션이다
- isTrigger 가 꺼져 있어도 충돌 지점 정보를 스크립트로 가져올 수 있게 해준다.
- 주로 Physics.GetContacts( ) 또는 OnCollisionStay( ) 내에서 정밀한 충돌 위치나 각도 계산을 하고 싶을 때 사용
( 성능에 약간 영향이 있으므로 필요할 때만 켜는 것을 권장 )
Material ( Physic Material )
- 충돌 시의 마찰 ( Friction ) , 튕김 ( Bounciness ) 같은 물리적 특성을 정의한다
- Physic Material 에셋을 연결해야 한다
| Bounciness | 충돌 시 얼마나 튀어오를지 |
| Friction | 마찰 정도 |
| Combine Mode | 두 물체가 충돌할 때 어떤 방식으로 값이 결합될지 |
Center ( X , Y , Z )
- 콜라이더의 중심 위치를 오브젝트의 로컬 좌표 기준으로 이동시킨다
- 모델의 중심이 약간 어긋나 있을 때 콜라이더만 따로 맞출 수 있다
Size ( X , Y , Z )
- 콜라이더의 가로 / 세로 / 깊이 크기를 설정한다
- 단위는 로컬 스케일 기준이며 , 오브젝트의 Transform 스케일에 영향을 받는다
Layer Overrides
- 유니티 2022.2 버전 이상에서 추가된 섹션이다.
- 충돌 감지를 기본 레이어 설정과 다르게 세부 제어할 수 있게 해준다
| Layer Override Priority | 같은 오브젝트에 여러 Collider 가 있을 때 , 어떤 Override 설정이 우선인지 정한다. 숫자가 높을수록 우선순위 높다. |
| Include Layers | 이 콜라이더가 충돌을 감지할 레이어만 지정한다. ( Nothing , Everything , 또는 특정 레이어 선택 가능 ) |
| Exclude Layers | 이 콜라이더가 무시할 레이어를 지정한다. include 보다 나중에 적용된다. |