[Unity, C#] Collision, Trigger 일어나는 조건

[Unity, C#] Collision, Trigger 일어나는 조건

유니티에서 Collision(콜리전, 충돌)과 Trigger(트리거)는 물리적 충돌 처리와 관련된 두 가지 주요 이벤트 타입이다. 각각의 특징과 사용 방법은 다음과 같다.

  1. Collision (충돌)
    1. 두 개의 collider(콜라이더)가 서로 물리적으로 충돌하는 상태를 의미한다.
    2. 충돌 이벤트가 발생할 때, 물리적 힘이 작용하고 물체들은 서로 밀려난다.
    3. 적과 플레이어가 충돌했을 때 데미지를 주거나, 플레이어가 물리적 장애물(벽, 돌 등)에 부딪혔을 때 멈추거나 튕기게 하는 등의 처리에 사용된다.
    4. 처리 함수 : OnCollisionEnter, OnCollisionStay, OnCollisionExit
  2. Trigger (트리거)
    1. collider 중 하나가 trigger로 설정된 상태를 의미한다.
    2. RigidBody 컴포넌트가 있더라도 충돌 시 물리적인 힘이 작용하지 않는다.
    3. 일반적으로 플레이어와 아이템이 상호작용하거나, 캐릭터가 영역에 진입하면 이벤트를 발생시킬 때 사용된다. 예를 들어, 아이템 주변에서 아이템을 주울 수 있게 하거나, 캐릭터가 함정 지역에 진입했을 때 경고 메시지를 띄우는 등의 처리에 사용된다.
    4. 처리 함수: OnTriggerEnter, OnTriggerStay, OnTriggerExit

Collider 유무, RigidBody 유무, Collider의 isTrigger On/Off, RigidBody의 isKinematic On/Off 상태에 따라 Collision, Trigger 중 어떤 이벤트가 일어나는지가 달라지는데 발생 조건이 가끔 헷갈릴 때가 있다. 이럴 때는 공식문서에서 Collision action matrix를 확인하면 된다.

Unity 2023.2 버전 기준으로는 다음과 같다.

💡
Static Collider = collider만 존재하는 객체
  • Collision 발생 조건
Collision 발생 조건표
  • Trigger 발생 조건
Trigger 발생 조건표