@@@ UNITY/이론

[UNITY] OnCollision & OnTrigger

HTG 2023. 1. 20. 10:38
728x90

앞서 작성한 상호작용 코드를 보다가 2가지의 차이가 있다는 것을 알게되었다.

 

둘다 충돌 체크를 위한 함수이다.

 

충돌 처리 공통 조건

1. 두 오브젝트가 collider를 가지고 있어야 한다.

어떤 종류의 collider이든 두 오브젝트가 collider 가지고 충돌을 감지할 수 있어야한다.

 

2. 적어도 하나의 오브젝트는 Rigidbody를 가지고 있어야 한다.

두 오브젝트 중 하나 이상이 Rigidbody를 가지고 있어야한다.

rigid body는 직역하면 강체라는 의미로 물리학에서 형태가 고정되어 변하지 않는 물체를 가르킨다

unity에서는

Rigidbody 는 GameObject 가 물리 제어로 동작하게 합니다. 리지드바디는 힘과 토크를 받아 오브젝트가 사실적으로 움직이도록 해줍니다. 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을 받아야 하며 스크립팅을 통해 가해진 힘으로 움직이거나 NVIDIA PhysX 물리 엔진을 통해 다른 오브젝트와 상호 작용해야 합니다.

하고 설명하고 있다.

즉, Rigidbody는 물리 법칙에 관한 기능 담당하기 때문에 한 오브젝트가 움직인다면 해당 오브젝트에 Rigidbody를 부착시킨다.

 

차이점

1. OnCollision

매개변수 타입 : Collision실제로 충돌이 일어나고 collier끼리 부딪힌다. 즉, 관통이 안된다.

물리 연산을 통한 충돌 처리

 

 

2.OnTrigger

매개변수 타입 : Collider

isTrigger 항목이 체크되어 있어야한다.

실제로 부딪히는건 아니고 겹칠 수 있다. 함정이나 보이지 않은 무언가와 충돌이 일어나는 것이다. 즉, 관통이 된다.

물리 연산 없음. 즉, Collision 보다 연산이 적어서 효율적이다.