본문 바로가기
C#

[C#][Unity] 충돌 감지

by teamnova 2022. 6. 17.

 

#1 충돌 발생조건

 

* 충돌이 일어나기 위해서는, 두 오브젝트가 모두 Colider를 갖고 있어야 하며, 둘 중 하나 이상은 RigidBody 컴퍼넌트를 갖고 있어야합니다.

* 두 개의 오브젝트 중 하나의 오브젝트만 움직인다면, 움직이는 오브젝트가 RigidBody 컴퍼넌트를 가지고 있어야합니다.

 

#2 Collision

*Collison은 실제로 물리적 충돌을 감지하여 충돌을 처리하는 클래스입니다.

따라서 두 오브젝트 모두 RigidBody 컴퍼넌트의 Is Kinematic 항목이 비활성화 되어 있어야만 합니다.

[Collision 관련 함수]

OnCollisionEnter(Collision collision) : 두 객체가 충돌 시 호출되는 함수 입니다.

OnCollisionStay(Collision collision) : 두 객체가 충돌하는 동안 호출되는 함수 입니다.

OnCollisionExit(Collision collision) : 두 객체가 충돌을 끝마치면 호출되는 함수 입니다.

 

#3 Trigger

Trigger은 Collision과 달리 Colider 를 이용해 충돌을 감지하는 클래스 입니다. 실제적인 물리적 충돌 연산을 하지 않고, 충돌을 감지 하기에 Is Kinematic 의 활성화 여부는 영향을 받지 않습니다. 따라서, 파라미터도 Collision이 아닌 Collider 입니다. 단, Trigger을 사용하기 위해서는 해당하는 게임 오브젝트의 Collider에 Is Trigger항목을 활성화 해 주어야 합니다.

[Trigger 관련 함수]

OnTriggerEnter(Colider other) : 두 객체가 충돌 시 호출되는 함수 입니다.

OnTriggerStay(Colider other) : 두 객체가 충돌하는 동안 호출되는 함수 입니다

OnTriggerExit(Colider other) : 두 객체가 충돌을 끝마치면 호출되는 함수 입니다.