• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

LayerMask

20.03.11 02:34 작성 조회수 138

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이 됩니다.