프로그래밍/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 << (레이어) )