728x90
RayerMask를 사용하면 내가 연산하고 싶은 오브젝트만 사용할 수 있다.
RayerMask는 비트플레그(Int32)를 사용한다.
아래와 같이 User Layer8, User Layer9는 비트플레그를 사용하면 각각 256, 512의 10진수이다.
- User Layer8, User Layer9를 비트연산자로 사용할 경우
int mask = (1 << 8) | (1 << 9);
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
int mask = (1 << 8) | (1 << 9);//int32 -> 비트연산
Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100.0f, mask))
{
Debug.Log($"Raycast Camera @ {hit.collider.gameObject.name}");
}
}
- User Layer8, User Layer9를 이름으로 접근하는 방법
LayerMask mask = LayerMask.GetMask("Monster") | LayerMask.GetMask("Well");
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
LayerMask mask = LayerMask.GetMask("Monster") | LayerMask.GetMask("Well");
Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100.0f, mask))
{
Debug.Log($"Raycast Camera @ {hit.collider.gameObject.name}");
}
}
728x90
'Unity' 카테고리의 다른 글
[Unity][팁] 유용한 Math함수 (0) | 2022.10.05 |
---|---|
[Unity][팁] transform.LookAt을 사용하여 오브젝트가 나를 바라보도록 (0) | 2022.10.05 |
[Unity][방법] Object충돌(Collision)_3 Ray사용하여 마우스 클릭좌표 얻기 (0) | 2022.10.05 |
[Unity][방법] Object충돌(Collision)_2 RaycastHit 레이저사용하기 (0) | 2022.10.05 |
[Unity][방법] Object충돌_1(Collision) OnCollisionEnter, OnTriggerEnter, OverlapSphere(설정반경오브젝트 확인) 방법 (0) | 2022.10.05 |