이번 글에서는 Unity 의 콜라이더 컴포넌트 (Collider Component) 에 대해서 알아볼 것이다.
Collider 는 UnityEngine 클래스에 포함되어 있으며, 단어는 충돌의 의미를 가지고 있다.
물리적인 상호작용, 접촉, 충돌에 대해서 모든 것을 관리한다고 보면 된다.
당연하지만 게임 속 세상에는 많은 오브젝트들의 충돌이 발생하고 처리된다.
플레이어의 캐릭터가 쏜 총알이나 화살이 적의 캐릭터에 맞거나, 폭탄이 떨어져서 바닥에 충돌하여 폭발하는 등
생각 외로 정말 게임 내에서 다양한 충돌과 그에 따른 액션들이 발생한다.
Box Collider, Sphere Collider, Capsule Collider 그리고 처리 속도
Unity 에서는 Collider 컴포넌트를 활용해서 오브젝트의 충돌을 체크한다.
대표적으로 사용되는 콜라이더는 Box Collider, Sphere Collider, Capsule Collider 가 있다.
Collider 컴포넌트에 있는 각각의 프로퍼티에 대한 설명과 충돌 이벤트 함수에 대한 사용법은 다음의 링크를 참고하자.
https://wergia.tistory.com/217
(정말 이해하기 쉽도록 설명이 되어있다)
참고로 링크의 설명에도 있지만, 게임 오브젝트에 중력과 같은 물리 효과나 물리 제어를 위해서는
Rigidbody 컴포넌트를 추가해야 한다.
그리고 아래의 유의사항도 알아두자.
=> 두 물체 간에 충돌이 발생하려면 적어도 한 물체에는 Rigidbody 가, 두 물체에는 Collider 가 있어야 한다.
=> IsTrigger 가 활성화된 Collider 끼리는 충돌 감지가 되지 않는다.
또한 Collider 는 물리 충돌에 대한 연산이 발생하다 보니 퍼포먼스에 신경을 써야 할 때가 있다.
Collider 의 형태가 단순할수록 성능에 부하를 주지 않으며, 충돌 처리 속도가 빠른 순서는 다음과 같다.
1. Sphere Collider (가장 빠름)
2. Capsule Collider (캐릭터에 주로 사용)
3. Box Collider (가장 많이 사용)
4. Mesh Collider (정밀 충돌)
순서를 살펴보니, 위에서는 언급하지 않았던 Mesh Collider 가 추가로 나왔다.
이어서 바로 Mesh Collider 에 대해서 알아보도록 하자.
Mesh Collider
Mesh Collider 는 오브젝트가 가지고 있는 Mesh 모양의 콜라이더다.
보통 정밀하게 충돌을 감지하는 경우에 사용하며, 메쉬의 형태가 복잡할수록 콜라이더의 연산 시간이 많이 걸린다.
(성능 저하 발생)
그래서 콜라이더를 추가하면 기본적으로 성능 저하 방지를 위해서 충돌 감지가 꺼져있다.
(Convex)
앞서 나왔던 내용들이 잘 정리된 다음의 링크를 참고하자.
(Mesh Collider 의 내용만 부분 참고해도 좋다)
자, 여기까지 3D 환경의 오브젝트를 위한 Collider 를 알아봤다.
2D 환경의 오브젝트를 위한 Collider 는 2편으로 나중에 별도로 글을 작성할 예정이다.
(이미 좋은 정보 자료들과 예제 코드가 많아서, 이렇게 링크 참조를 통해서 미흡한 내용들을 함께 정리하는 식으로 작성할 것 같다)
+ 다음글 (2편)
https://dbsckdqja75.tistory.com/40
마무리
글을 다 작성하니 빼먹은 내용이 생각났다;;
총알의 충돌 처리가 필요한 게임의 경우 (FPS 등) 에는 총알의 속도가 너무 빠르면 충돌 인식이 다소 어려워지는 일이 발생한다.
(간혹 총알이 뚫을 수 없는 콜라이더 벽을 뚫고 튀어나가는 것이 예시인데 이것을 터널링 현상, 터널 효과라고 한다)
그래서 총알과 같이 빠른 충돌 물체들은 매 프레임마다 Raycast 와 같은 추가 처리가 필요하다.
(Raycast 도 나중에 글로 다뤄볼 예정이다)
(관련된 얘기가 나오는 Throw Bug 질문 글 자료)
'Unity' 카테고리의 다른 글
[Unity] 좌표계에 대해 알아보기 (1) | 2021.11.22 |
---|---|
[Unity] 콜라이더 (Collider) 에 대해 알아보기 #2 (1) | 2021.11.07 |
댓글