[Unity] 물리 충돌 이벤트 (OnTrigger / OnCollision

⭐ 물리 충돌 이벤트

● Collider와 Rigidbody 컴포넌트를 가진 오브젝트들이 서로의 영역에 들어오거나 나갈 때 발생하는 콜백 함수입니다.

● Collider 영역끼리 부딪혔는지, 실제 Rigidbody가 물리적으로 부딪혔는지에 따라 사용하는 이벤트가 나뉩니다.

    ○ Collider 영역끼리의 충돌 → 트리거(Trigger) 이벤트

    ○ 실제 물리적(Rigidbody) 충돌 → Collision 이벤트

 

 

 

💡Trigger 이벤트


● 단순 Collider 경계 영역에 침범했는지를 감지합니다.

    ○ 단순히 영역 침범만 체크, 물리적인 반응은 없음

    ○ 주변에 있는 아이템을 먹는 등의 기능 구현에 사용

● 영역 감지를 목적으로 사용합니다. (아이템 줍기, 지역(Zone) 체크 등)

 

 

 

Trigger 이벤트의 종류

메서드 설명
OnTriggerEnter / OnTriggerEnter2D Collider 영역에 들어왔을 때 1번 호출
OnTriggerStay / OnTriggerStay2D Collider 영역 안에 머무는 동안 매 프레임 호출
* 여기서 매 프레임은 FixedUpdate를 말함
OnTriggerExit / OnTriggerExit2D Collider 영역에서 빠져나올 때 1번 호출

 

 

 

Trigger 이벤트를 사용하기 위한 조건

● Trigger 이벤트를 사용하기 위해선 충돌하는 두 오브젝트가 갖추어야 할 조건이 있습니다.

    ○ 두 오브젝트 모두 Collider 컴포넌트 필요

    ○ 하나 이상의 오브젝트는 Rigidbody 컴포넌트 필요

    ○ 하나 이상의 Collider는 IsTrigger가 true여야 함

 

 

 

 

💡Collision 이벤트


● 실제 물리적인 충돌이 발생했는지를 감지합니다.

● 물리적인 충돌을 목적으로 사용합니다. (벽에 막힘, 바닥 착지 등)

 

 

 

Collision 이벤트의 종류

메서드 설명
OnCollisionEnter / OnCollisionEnter2D 처음 충돌했을을 때 1번 호출
OnCollisionStay / OnCollisionStay2D 충돌 중일 때 매 프레임 호출
* 여기서 매 프레임은 FixedUpdate를 말함
OnCollisionExit / OnCollisionExit2D 충돌에서 떨어질 때 1번 호출

 

 

 

Collision 이벤트를 사용하기 위한 조건

● Collision 이벤트를 사용하기 위해선 충돌하는 두 오브젝트가 갖추어야 할 조건이 있습니다.

    ○ 두 오브젝트 모두 Collider 컴포넌트 필요

    ○ 하나 이상의 오브젝트는 Rigidbody 컴포넌트 필요

    ○ 두 Collider 모두 IsTrigger가 false여아 함