Unity를 사용하다보면 LayerMask를 사용하여 RayCast 해당 오브젝트의 정보를 받아올 때 많이 사용합니다. 사용하는 방법에 대해서만 알고 어떻게 동작을 하는지 알지 못해 레이어 마스크에 대해 알아보려고 합니다.
LayerMask란?
레이어 기반 작업을 단순화 하는 기능입니다.
32비트의 int형으로 특정 레이어에서 대상 작업을 필터링하고 수행할 수 있습니다.
이때 레이어 마스크는 32 비트로 32개까지만 레이어마스크를 지정할 수 있습니다.
LayerMask는 오브젝트의 인스펙터 창에서 설정을 하고 Add Layer를 통해 레이어를 추가할 수 있습니다.
4번 Water나 5번 UI를 비트 플래그로 접근하는 방법을 예를 들겠습니다. "1 << n" 1을 비트 위치로 시프트 하며 이는 n번째 레이어를 나타내는 비트마스크를 사용하는데 사용합니다.
Water - 0000000000000000000000000001000 ( 4번 레이어 1 << 4 )
UI - 0000000000000000000000000010000 ( 5번 레이어 1 << 5 )
LayerMask 함수
LayerMask.GetMask
문자열로 저장된 레이어 이름은 비트로 가져올 수 있음
LayerMask.NameToLayer
레이어의 인덱스를 반환
LayerMask.LayerToName
인텍스를 검색하여 레이어의 이름을 검색
LayerMask.value
비트 마스크 값을 나타냄
LayerMask.Contains
특정 레이어 인덱스가 포함되어있는지 여부 확인
마무리
항상 LayerMask의 이름을 통해서만 찾았었는데 비트플래그를 통해 할 수 있다는 것을 새롭게 알게되어서 좋았습니다.
해당 방법을 유용하게 사용할 수 있을 것 같습니다!
참고 사이트
'Unity > 개념 공부' 카테고리의 다른 글
[ Unity ] AI Navigation (0) | 2024.05.28 |
---|---|
[ 내일배움캠프 ] TIL.25 - 스크롤 쉐이더 만들기 (0) | 2024.05.21 |
[ 내일배움캠프 ] TIL.21 - 개인프로젝트 마무리 (0) | 2024.05.14 |
[ 내일배움캠프 ] TIL.17 - New Input System (0) | 2024.05.08 |
[ 내일배움캠프 ] TIL.16 - Console 팀 프로젝트 마무리 (0) | 2024.05.07 |