본문 바로가기
Unity 3D

Unity 3D 엔진 기초 (7) Collider

by 연꿈술사 2023. 8. 10.

안녕하세요 연꿈술사입니다.

오늘은 물리적인 충돌감지를 위해 존재하는 컴포넌트 중 하나인 Collider에 대해 설명해 보려고 합니다.

우리가 게임을 하다보면 항상 외치는 게 있습니다. 바로 현실고증!

게임을 하는데 물리적인 충돌이 발생하지 않는다면 어떨까요? 캐릭터와 캐릭터가 부딪혔는데 통과해 버린다면?

바닥은 차치하고 눈앞의 건물들도 그냥 통과가 되어버린다면? 분명 재미없을 겁니다.

Unity 에서는 이런 물리적인 충돌을 감지할 수 있도록 Collider를 만들어 놓았습니다. 또한 중력과 관련있는

Rigidbody도 있지만, 이에 대해서는 다음 시간에 다뤄보도록 하겠습니다.

Inspector 창에서 보여지는 Box Collider

Collider에는 Box, Sphere, Capsule, Mesh 등 다양한 Collider가 존재합니다. 사물의 모양이 모두 다른 것처럼 

Collider도 다양할수록 오브젝트와 모양을 비슷하게 맞출 수 있을 것입니다. 위의 사진에서 보이는 것 처럼

Edit Collider를 클릭해 직접 Scene 화면에서 눈으로 보며 수정할 수도 있고, Center와 Size를 통해 수치를 조절해가며

사이즈를 변경할 수도 있습니다. 타 Collider에서는 Size 대신 Radius나 Height 등 다양하게 크기를 조절할 수 있는

프로퍼티가 추가되어 있습니다. 

 

Capsule Collider

 

그리고 IsTrigger를 통해 물리연산을 없애는 대신, 트리거의 형태로 존재해 스크립트와 연계하여 통과 시 이벤트를

줄 수 있는 OnTriggerEnter,OnTriggerStay, OnTriggerExit 등을 사용할 수 있습니다. 혹은 IsTrigger를 체크하지 않고

충돌 시 이벤트를 수행하는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 또한 있습니다. IsTrigger의 경우는

우리가 어떤 곳을 지날 때 컷신을 등장시키거나, 다음 맵으로 이동한다거나 포탈에 가면 이동을 시켜주는 등 보이지

않고 물리적인 연산을 필요로 하지는 않지만 이벤트를 발생시켜야 하는 경우 주로 사용합니다.

 

Material에서는 다양한 물리 Material을 집어넣어 공을 튕기게 하는 등의 현실적인 모습을 더욱 추가해 줄 수 있습니다.

 

추가로 우리가 맵을 만들다보면 굉장히 많은 오브젝트들을 추가하고, 이에 대한 수많은 Collider들이 생길 것입니다. 그럼

하나하나 충돌에 대한 연산을 할까요? 그렇게 되면 오브젝트가 많아질수록 부하가 많이 일어나고, 게임은 느려질 것입니다. 그래서 Unity에서는 이를 방지하기 위해 움직이지 않는 물체끼리는 물리연산을 하지 않게 해두었습니다. 움직이지 않는데 서로 물리연산을 일으킬수는 없다는 것입니다. 그래서 최소 한 쪽은 움직여야 다른 물체들과 물리연산을 실행하고 이벤트들을 일으키도록 해두었습니다. 

 

또, Collider는 2D와 3D가 따로 있습니다. Box Collider처럼 뒤에 아무것도 붙지 않은 건 3D에서 사용하고, 2D가 붙은 Collider는 2D에서 사용하니 알아두시기 바랍니다. 

 

자, 간단하게 Collider에 대해 알아보았습니다. 다음 시간에는 Collider하면 빠질 수 없는 Rigidbody에 대해 알아보겠습니다.

연꿈술사였습니다. 감사합니다.

 

댓글