본문 바로가기

유니티 ML Agents/유니티 Tip

유니티(Unity) 충돌 처리 Trigger 와 Collision

유니티에서 충돌 처리하는 방식은 크게 두가지가 있다. 하나는 Trigger를 사용하는 것이다. 객체의 콜라이더(Collider) 컴포넌트에 있는 Trigger 속성이 활성화되어 있으면 물체가 충돌할 때 OnTriggerEnter 함수가 호출된다. 충돌이 계속되는 시점에는 OnTriggerStay 함수가 반복적으로 호출되며 충돌이 끝나면 OnTriggerExit 함수가 호출된다. 

다른 하나는 Collision을 사용하는 것이다. 객체의 Collision 컴포넌트에 Trigger 속성이 비활성화되어 있을 경우 두 객체가 충돌하면 OnCollisionEnter 함수가 호출된다. 충돌이 계속되는 시점에는 OnCollisionStay 함수가 호출되며 충돌이 끝나면 OnCollisionExit함수가 호출된다.

Trigger와 Collision을 차이점은 Collision 충돌 처리 할 때는 두 객체 모두 리짓바디(Ridgidbody) 컴포넌트의 Kinematic 속성이 비활성화되어 있어야 한다는 것이다. 

Trigger는 단단한 객체로 동작하지 않기 때문에 Kinematic 제약이 적용되지 않는다. 따라서 충돌을 검사해야 하는 객체의 특성에 따라 어떤 방식을 사용할 지 선택하면 된다.




OnTriggerEnter 함수는 충돌한 상대방 객체의 Collider 컴포넌트를 입력으로 받는다. 컴포넌트가 속해있는 객체를 식별하기 위해 일반적으로 Tag가 많이 사용된다. 태그를 객체의 인스펙터 뷰에서 설정할 수 있다. Tag 속성을 선택하고 마지막에 있는 Add Tag 메뉴를 통해 태그를 추가하고 선택할 수 있다.



'유니티 ML Agents > 유니티 Tip' 카테고리의 다른 글

유니티 용어 설명  (0) 2018.11.18
유니티(Unity) 충돌 처리 Trigger 와 Collision  (0) 2018.11.18
콜라이더(Collider)  (0) 2018.11.18
유니티 주요 링크  (0) 2018.11.17
Visual Studio 2017 로그인 오류  (0) 2018.11.17