TIL_2025_02_18 Trigger

김효중·2025년 2월 18일

1. Tirgger란?

Tirgger란 Collider의 속성 중 하나로 해당 옵션을 활성화하면 해당 Collider는 다른 콜라이더와의 물리적 충돌을 발생시키지 않는다.
즉 다른 오브젝트에 의해 움직여지거나 다른 오브젝트의 물리에 간섭하지 않는다.
대신 다른 Collider와의 충돌을 검사만을 진행한다.
이는 특정 영역에 대한 접근, 이탈등에 대한 이벤트를 구현하는데 사용된다.

2. Tirgger의 사용법

  1. Collider 컴포넌트를 추가하여 위 사진의 Is Trigger 옵션을 체크한다.
  2. OnTriggerEnter, OnTriggerStay, OnTriggerExit등의 이벤트를 스크립트에 추가한다.

스크립트의 이벤트는 다른 Collider와의 충돌의 결과에 따라 호출 된다.
단 솔리드 속성의 오브젝트에 대해서는 동작하지 않는다.
각각의 이벤트는 다음과 같다

  • OnTriggerEnter
    OnTriggerEnter는 트리거 내부에 진입이 시작한 순간 호출 된다.
  • OnTriggerStay
    OnTriggerStay 트리거 영역에 진입하는 동안 계속 호출 된다.
  • OnTriggerExit
    OnTriggerExit 트리거 영역에 벗어난 순간에 호출 된다.

3. Trigger와 RigidBody


Trigger 이벤트를 감지하려면 충돌하는 두 오브젝트중 적어도 하나의 오브젝트는 RigidBody 컴포넌트가 필요하다. 만약 둘 중 하나도 없다면 이벤트는 발생하지 않는다.
이때 RigidBody의 옵션에 따라 충돌이벤트 호출 여부가 다르며 자세한 사항은 위와 같다.

4. Trigger와 Collision의 이벤트 차이

rigger와 Collision은 모두 Collider 컴포넌트를 기반으로 이벤트를 발생시키지만 이벤트의 종류가 다르다.
호출 이벤트는 다음과 같다.

  • Trigger
    OnTriggerEnter, OnTriggerStay, OnTriggerExit 이벤트를 사용하며 2D의 경우 뒤 2D가 붙는다. 매개변수로는 자신과 충돌한 Collider를 받는다.
private void OnTriggerExit2D(Collider2D collision)
  • Collision
    OnCollisionEnter, OnCollisionStay, OnCollisionExit 이벤트를 사용하며 2D의 경우 뒤에
    2D가 붙는다. 매겨변수로는 자신과 충돌한 Collision를 받는다.
// 예시
private void OnCollisionEnter2D(Collision2D collision)

참고 : https://docs.unity3d.com/kr/530/Manual/CollidersOverview.html

profile
도전하는 개발자

0개의 댓글