TIL/Unity

[Unity] 충돌체크 기능 OnCollision, OnTrigger

Sh_Blog 2023. 9. 12. 16:35

OnCollision, OnTrigger 가 무엇인가?

공통적으로 충돌과 관련된 기능을 구현하고 싶을 때 사용하는 메소드다.

 

 그럼 공통된 기능이니깐 아무거나 써도 되지 않을까? 생각할 수 있지만

엄연히 둘은 다른 목적을 가지고 있다.

 

Collision

Collision은 물리 연산을 하기 때문에 무언가에 부딪혀서 물리적 반응이 나와야 할 때 사용한다.

예를 들어 공이 바닥에 닿으면 튕겨나가는 것을 말한다.

 

Trigger

Trigger는 물리연산을 하지않는다. 그래서 물체가 어딘가에 관통하여 지날갈 때나 부딪혔을 때 사라져야할 경우 사용한다.

총알과 관련된 기능을 예를 들 수 있다.

 

 

Collision 기능

OnCollisionEnter(Collision) - 두 물체가 부딪혔을 때

 

OnCollisionStay(Collision) - 물체가 충돌 중일 때

 

OnCollisionExit(Collision) - 물체가 충돌범위에서 나갔을 때

 

 

Trigger 기능

 

OnTriggerEnter(Collider) - 두 물체가 부딪혔을 때

 

OnTriggerStay(Collider) - 두 물체가 충돌 중일 때

 

OnTriggerExit(Collider) - 물체가 충돌범위에서 나갔을 때

 

 

사용시 주의사항

 

1. OnCollision 과 OnTrigger는 충돌하는 물체 중 Rigidbody가 최소 하나 이상 포함되어있어야한다.

 

2. OnCollision 과 OnTrigger는 충돌하는 물체에 Collider가 모두 포함되어있어야한다.

 

3. OnTrigger는 충돌하는 물체 중 isTrigger체크를 하나 이상 해야한다.

 

4. OnCollision은 충돌하는 물체 중 isTrigger체크를 하나도 하면 안된다.

 

5. OnCollision은 매개변수 타입이 Collision이고 OnTrigger의 매개변수 타입은 Collider다.

 

 

회고

물체가 충돌할 때 항상 궁굼했던 것이 Trigger 와 Collision의 차이였는데 오늘 확실히 알게되서

다음에 사용할 때 적재적소에 맞게 쓸 수 있을 것 같다. 하지만 위에서 적어놓은 주의사항은 나도 그렇고 팀원도 헷갈려 하던 부분이였기 때문에 확실히 인지하고 넘어가야겠다.