프로그래밍/Unity

유니티 Raycast와 Layermask 변수

초은하 2020. 2. 6. 06:08

Raycast 함수에 필요한 매개변수는 다음과 같다.

 

Ray 충돌을 검출할 직선 (Vector 두개로 시점과 방향벡터를 넣을 수도 있다)

RaycastHit 충돌체의 정보를 받을 변수 

float 탐지거리

int 레이어 마스크(layerMask)

 

이 중 레이어 마스크는 원하는 레이어의 충돌체만 검출하고 싶을 때 사용하는 변수이며, 비트값으로 이용한다.

원하는 특정 레이어만 검출하는 마스크를 생성하기 위해선

1<<LayerMask.NameToLayer("원하는 레이어 이름") 의 비트연산을 하게된다.

 

복수의 레이어를 원할 경우엔

1 << (레이어1) | (레이어2) 의 형태로 비트or 연산을 추가하면 된다.

 

반대로 특정 레이어만 제외한다면 위와 같이 계산된 레이어 마스크의 비트를 부정한다. (Not 연산)

~( 1 << (레이어) )

 

혹은 -1에서 빼도 같은 결과가 산출된다.

-1 - ( 1 << (레이어) )