인프런 커뮤니티 질문&답변

hwakyeom님의 프로필 이미지
hwakyeom

작성한 질문수

레트로의 유니티 C# 게임 프로그래밍 에센스

Gun 스크립트 (5/6)

LayerMask

작성

·

203

0

API 검색해보니까 bit마스크라고 그러던데

만일 어떤 레이어1을 표현하는 2진수가 101010이면

처리되는 오브젝트 검사해서 101010레이어에 속해 있으면

레이어에 포함된 거로 친다고 하면요,

~ 붙여서 010101로 바꿔버리면,

그래서

Physics.Raycast(startPoint, direction, out hit, fireDistance, ~101010(=010101)) 했다고 치면

010101 레이어에 속해 있는 오브젝트들만 반응해야 하는 거

아닌가요?? ~ 연산자가 정확히 어떻게 되는 거죠??

실제로는 101010이 아닌 레이어들 몽땅에게 적용되던데

비트 뒤집기라고 하면 010101인 레이어만 적용되어야 하는 거

아닐까요?

답변 1

0

이제민님의 프로필 이미지
이제민
지식공유자

유니티에서 레이어마스크가 동작하는 방식은, 한자리수 = 하나의 레이어로 동작하기 떄문입니다.

즉 101 이라고 하면,

- 100 레이어는 on

- 010 레이어는 off

- 001레이어는 on이 됩니다.

마찬가지로 111 이라고 하면

- 100 레이어는 on

- 010 레이어는 on

- 001레이어는 on이 됩니다.

따라서, 예를 들어 100 레이어만 on인, 100 레이어를 뒤집어 011로 할당하게 되면

- 100 레이어는 off

- 010 레이어는 on

- 001레이어는 on이 됩니다.

hwakyeom님의 프로필 이미지
hwakyeom

작성한 질문수

질문하기