Unity

[Unity] 콜라이더 (Collider) 에 대해 알아보기 #1

윤창범 2021. 10. 29.

이번 글에서는 Unity 의 콜라이더 컴포넌트 (Collider Component) 에 대해서 알아볼 것이다.

 

Unity Docs (Collider)

 

Unity - 스크립팅 API: Collider

See Also: BoxCollider, SphereCollider, CapsuleCollider, MeshCollider, PhysicMaterial, Rigidbody. 콜라이더를 가진 오브젝트가 게임플레이 중에 움직여질 경우, 해당 오브젝트에는 Rigidbody 컴포넌트를 붙여야 합니다. 만

docs.unity3d.com

 

Collider 는 UnityEngine 클래스에 포함되어 있으며, 단어는 충돌의 의미를 가지고 있다.

 

물리적인 상호작용, 접촉, 충돌에 대해서 모든 것을 관리한다고 보면 된다.

 

당연하지만 게임 속 세상에는 많은 오브젝트들의 충돌이 발생하고 처리된다.

 

플레이어의 캐릭터가 쏜 총알이나 화살이 적의 캐릭터에 맞거나, 폭탄이 떨어져서 바닥에 충돌하여 폭발하는 등

생각 외로 정말 게임 내에서 다양한 충돌과 그에 따른 액션들이 발생한다.

 


Box Collider, Sphere Collider, Capsule Collider 그리고 처리 속도

 

Unity 에서는 Collider 컴포넌트를 활용해서 오브젝트의 충돌을 체크한다.

 

< 출처 : 베르의 프로그래밍 노트 >

 

대표적으로 사용되는 콜라이더는 Box Collider, Sphere Collider, Capsule Collider 가 있다.

 

< 출처 : 베르의 프로그래밍 노트 >

 

Collider 컴포넌트에 있는 각각의 프로퍼티에 대한 설명과 충돌 이벤트 함수에 대한 사용법은 다음의 링크를 참고하자.

 

https://wergia.tistory.com/217

 

[Unity3D] Physics - Collider 컴포넌트로 충돌체크하기

Physics - Collider 컴포넌트로 충돌체크하기 작성 기준 버전 :: 2019.2 [본 포스트의 내용은 유튜브 영상을 통해서도 확인할 수 있습니다] 게임에서는 많은 것들이 충돌한다. 캐릭터가 총알이나 화살에

wergia.tistory.com

(정말 이해하기 쉽도록 설명이 되어있다)

 

참고로 링크의 설명에도 있지만, 게임 오브젝트에 중력과 같은 물리 효과나 물리 제어를 위해서는
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

 

< 출처 : https://ssabi.tistory.com/45 >

 

Mesh Collider 는 오브젝트가 가지고 있는 Mesh 모양의 콜라이더다.

 

보통 정밀하게 충돌을 감지하는 경우에 사용하며, 메쉬의 형태가 복잡할수록 콜라이더의 연산 시간이 많이 걸린다.

(성능 저하 발생)

 

< 출처 : https://ssabi.tistory.com/45 >

 

그래서 콜라이더를 추가하면 기본적으로 성능 저하 방지를 위해서 충돌 감지가 꺼져있다.

(Convex)

 

앞서 나왔던 내용들이 잘 정리된 다음의 링크를 참고하자.

 

https://ssabi.tistory.com/45

 

[Unity3D] 콜라이더(Collider)

콜라이더(Collider) 콜라이더는 충돌 감지를 위한 컴포넌트 입니다. 콜라이더는 3D 오브젝트를 위한 Box Collider, Capsule Collider, Shpere Collider 등이 있고 2D 오브젝트를 위한 Box Collider 2D, Capsule Co..

ssabi.tistory.com

(Mesh Collider 의 내용만 부분 참고해도 좋다)

 

자, 여기까지 3D 환경의 오브젝트를 위한 Collider 를 알아봤다.

 

2D 환경의 오브젝트를 위한 Collider 는 2편으로 나중에 별도로 글을 작성할 예정이다.

(이미 좋은 정보 자료들과 예제 코드가 많아서, 이렇게 링크 참조를 통해서 미흡한 내용들을 함께 정리하는 식으로 작성할 것 같다)

 

+ 다음글 (2편)

https://dbsckdqja75.tistory.com/40

 

[Unity] 콜라이더 (Collider) 에 대해 알아보기 #2

https://dbsckdqja75.tistory.com/39 [Unity] 콜라이더 (Collider) 에 대해 알아보기 #1 이번 글에서는 Unity 의 콜라이더 컴포넌트 (Collider Component) 에 대해서 알아볼 것이다. Unity Docs (Collider) Unity..

dbsckdqja75.tistory.com


마무리

 

글을 다 작성하니 빼먹은 내용이 생각났다;;

 

총알의 충돌 처리가 필요한 게임의 경우 (FPS 등) 에는 총알의 속도가 너무 빠르면 충돌 인식이 다소 어려워지는 일이 발생한다.

(간혹 총알이 뚫을 수 없는 콜라이더 벽을 뚫고 튀어나가는 것이 예시인데 이것을 터널링 현상, 터널 효과라고 한다)

 

그래서 총알과 같이 빠른 충돌 물체들은 매 프레임마다 Raycast 와 같은 추가 처리가 필요하다.

(Raycast 도 나중에 글로 다뤄볼 예정이다)

 

(관련된 얘기가 나오는 Throw Bug 질문 글 자료)

 

유니티 콜라이더 오브젝트 속도별 인지 - throw bug

플레이어가 총알을 발사하여 적을 맞추는 게임입니다. 물리적 충돌이아닌 triggerEnter로 구현하였는데 총알의 속도가 특정 속도를 넘기게되면 적의 콜라이더가 총알이 지니가도 인지하지 못합니

throwbug.com

 

참고자료1 (Physic Material 내용만)

 

[유니티] 4. 콜라이더(collider), 트리거

본 내용은 필자가 공부한 내용을 정리한 것으로 틀리거나 잘못된 내용이 있을 수 있습니다. 콜라이더는 유니티에서 가장 많이 쓰이는 것 중 하나로, 충돌을 감지할 때 쓰입니다. 3D에서는 Box Colli

ariel1910.tistory.com

 

'Unity' 카테고리의 다른 글

[Unity] 좌표계에 대해 알아보기  (1) 2021.11.22
[Unity] 콜라이더 (Collider) 에 대해 알아보기 #2  (1) 2021.11.07

댓글