본문 바로가기
Study/Unity

[Unity] 헷갈리는 개념, Collider - Layer Overrides(Include Layers, Exclude Layers)

by 스테디코디스트 2024. 1. 5.
반응형
유니티에서 콜라이더의 속성 중 Layer Overrides에 대해 알아보자!

 

아래 그림과 같은 대부분의 기본 콜라이더에 포함되어있는 Layer Overrides 속성을 이용해 레이어를 이용한 확장기능을 이용할 수 있다.

 

1. Layer Override Priority

: 자신의 콜라이더와 겹치는 충돌이 발생할 때 어떤 것을 우선할지를 정해주는 우선순위이다.

: 숫자가 낮을수록 우선순위가 높다.

 

2. Include Layers

: 충돌행렬에서 충돌이 안되게 설정한 것들을 이 물체에만 충돌체크가 되도록 해준다.

 

3. Exclude Layers

: 설정한 레이어로 된 콜라이더와의 접촉은 무시한다.

 

※ 예시

 

<조건>

1. 아래 그림에서 가운데 두 캡슐은 각각 큰 원형의 콜라이더를 가지고 있다.(Rigidbody도 가지고 있다.)

2. default와 water를 가진 콜라이더는 충돌이 체크되지 않도록 사전에 설정해두었다.

3. 스크립트를 이용해 물체가 부딫히면 자신의 이름과 부딫힌 물체의 이름이 뜨도록 해주었다.

4. 박스1은 UI로, 박스 2는 Water로 레이어 설정이 되어있고, 두 캡슐은 모두 Default로 레이어 설정이 되어있다.

5. 캡슐 1은 Include Layers를 Water로, Exclude Layers를 Default로 설정하였고, 캡슐 2는 Include Layers와 Exclude Layers를 모두 Nothing으로 설정했다.

좌) 씬 이미지, 우) 충돌 Matrix 설정
좌) 캡슐 1의 레이어 설정, 우) 캡슐 2의 레이어 설정

 

먼저, 캡슐 2부터 살펴보자. 캡슐 2에는 아무런 설정이 되어있지 않으므로 기존 충돌 매트릭스에 의해 Water로 레이어가 설정된 박스 2에 대해 충돌을 감지하지 않는다.

 

다음으로 캡슐 1은 Include Layers 설정이 Water로 되어있으므로 Water에 대해서 충돌을 감지한다. 따라서 박스 2에 대해 충돌을 감지하게 된다.

 

마지막으로 캡슐 1에서 Exclude Layers 설정이 Default로 되어있으므로 캡슐 1은 Default로 레이어 설정된 물체들과 충돌을 일으키지 않게되므로 캡슐 2와 서로 충돌을 감지하지 않게된다.

 

따라서 아래 그림과 같이, 기본적으로 충돌 매트릭스만 설정된 경우에는 Water와 Default만 서로 감지되지 않으므로 박스 2와 각 캡슐에 대한 충돌을 제외한 나머지 충돌에 대해 하단의 좌측과 같은 결과가 출력된다. 하지만, 위와 같이 Layers를 이용해서 충돌에 대한 확장기능을 이용했을 경우, 앞서 설정한 내용에 따라 하단의 우측과 같은 출력이 나오게된다.

좌) 충돌 매트릭스만 설정시 출력, 우) Layers 설정 후 출력


<참고 사이트>

 

Unity - Scripting API: Collider.layerOverridePriority

The Layer Collision Matrix defines which layers can contact other layers. Additionally, you can include and exclude layers per Collider or for all Colliders attached to a specific Rigidbody or ArticulationBody. Any contact involves two different Collider i

docs.unity3d.com

 

 

박스 콜라이더 2D - Unity 매뉴얼

박스 콜라이더 2D는 2D 물리 시스템과 상호 작용하는 콜라이더입니다.스프라이트의 로컬 좌표 공간 안에 포지션, 폭, 높이가 정의된 직사각형 모양입니다.참고:이 선택 직사각형은 로컬 공간의 X

docs.unity3d.com