Pink Transparent Star

Unity/개념 공부

[ 내일배움캠프 ] TIL.22 - 레이어마스크 (LayerMask)

채유나 2024. 5. 16. 21:40
728x90

Unity를 사용하다보면 LayerMask를 사용하여 RayCast 해당 오브젝트의 정보를 받아올 때 많이 사용합니다. 사용하는 방법에 대해서만 알고 어떻게 동작을 하는지 알지 못해 레이어 마스크에 대해 알아보려고 합니다.

 

LayerMask란?

레이어 기반 작업을 단순화 하는 기능입니다. 

32비트의 int형으로 특정 레이어에서 대상 작업을 필터링하고 수행할 수 있습니다.

 

이때 레이어 마스크는 32 비트로 32개까지만 레이어마스크를 지정할 수 있습니다.

 

 

LayerMask는 오브젝트의 인스펙터 창에서 설정을 하고 Add Layer를 통해 레이어를 추가할 수 있습니다.

 

4번 Water나 5번 UI를 비트 플래그로 접근하는 방법을 예를 들겠습니다. "1 << n" 1을 비트 위치로 시프트 하며 이는 n번째 레이어를 나타내는 비트마스크를 사용하는데 사용합니다.

Water - 0000000000000000000000000001000 ( 4번 레이어 1 << 4 )

UI0000000000000000000000000010000 ( 5번 레이어 1 << 5 )

 

LayerMask 함수

 

LayerMask.GetMask

 문자열로 저장된 레이어 이름은 비트로 가져올 수 있음

 

LayerMask.NameToLayer

 레이어의 인덱스를 반환

 

LayerMask.LayerToName

인텍스를 검색하여 레이어의 이름을 검색

 

LayerMask.value

 비트 마스크 값을 나타냄

 

LayerMask.Contains

 특정 레이어 인덱스가 포함되어있는지 여부 확인

 

 

 

마무리

항상 LayerMask의 이름을 통해서만 찾았었는데 비트플래그를 통해 할 수 있다는 것을 새롭게 알게되어서 좋았습니다.

해당 방법을 유용하게 사용할 수 있을 것 같습니다!

 

참고 사이트

 

Unity C# > UnityEngine : LayerMask

공부하면서 알게된 것만 정리합니다.😀

ansohxxn.github.io

 

728x90