Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 게임
- AR Foundation
- callbyreference
- C#
- 1인개발
- 확장메서드
- 리듬게임
- Unity
- callbyvalue
- AR세팅
- raycast
- 깃허브
- AR게임
- github
- ARProgect
- 리듬게임에디터
- ExtensionMethod
- 게임개발
- 짐벌락
- 레이캐스트
- Euler
- 유니티
- 병맛게임
- ar
- 소규모프로젝트
- 로케트
- 게임제작
- Quaternion
- 인터페이스
- 델리게이트
Archives
- Today
- Total
Ssssong += Dev
[유니티, C#] layerMask와 비트연산자 본문
유니티의 layerMask는 int형으로 되어 있으며 각 레이어는 비트로 정보를 저장한다.
따라서 layerMask를 사용할 때에 비트 연산을 자주 사용하게 되는데,
그간 비트연산자를 사용할 일이 잘 없었으니 간단하게 정리해 두려 한다.
if (Physics.Raycast(transform.position, transform.forward, out hit, 10, (1<<7 | 1<<8)))
{
Destroy(hit.transform.gameObject);
}
여기서 레이캐스트는 충돌 대상이 layer7과 layer8일 때 충돌을 인식하는데,
<< 는 시프트 연산자로 만약 1<<2일 경우 0001이 0100으로 비트를 이동한다.
OR 연산자인 | 는 만약 0001 | 0100일 경우 0101을 리턴한다.
AND 연산자인 &는 0011 & 0110일 경우 0010을 리턴한다.
NOT 연산의 ~는 비트를 반전시킨다. ~0010 == 1101 해당 레이어 빼고 전부 선택 시 사용하면 좋다.
XOR 연산인 ^는 대응되는 비트가 서로 다를 때 1을 반환한다. 1101 ^ 0100 == 1001
유니티 레이어마스크에서 OR 연산자는 더할 때, XOR 연산자는 뺄 때라 생각하면 편하다.
'개발 > 공부' 카테고리의 다른 글
[C#] 인터페이스 (0) | 2022.05.16 |
---|---|
[유니티] Raycast (0) | 2022.05.10 |
[C#] 구조체와 클래스의 값 복사 (0) | 2022.05.09 |
피보나치 수열, 하노이 탑, 링크드리스트, 배열형 스택 (0) | 2022.05.02 |
[C#, 유니티] Coroutine (0) | 2022.04.14 |