Client/C# with Unity

[정보] Unity 2D RayCast와 tag를 사용해서 화면에 터치된것들 구분하기! _ ex) UI에 가려진 부분은 터치에 반응하지 않도록 만들기.

Ardmos :) 2022. 1. 9. 01:01

 

제가 사용한 코드 입니다.

 

아직 많이 모자라서 이렇게 블로그에 올리긴 부끄럽지만.... 저도 항상 인터넷에서 도움을 많이 받는 입장에서 저도 선순환에 참여하고자

제 글이 조금이나마 도움이 되길 바라며 용기내봅니다.

 

더 좋은 방법을 알게되면 새롭게 포스팅 하겠습니다 :) 

 

 

 

아래처럼 인자로 터치 포지션을 넣어서 사용해주시면 됩니다. 

 

 

 

 

    //터치된것이 UI이면 True 리턴.
    private bool Check_if_it_is_UI(Touch touch)
    {
        var pointer_event_data = new PointerEventData(null);
        pointer_event_data.position = touch.position;
        List<RaycastResult> raycast_results_list = new List<RaycastResult>();  //여기에 히트된 개체 저장.
        gr.Raycast(pointer_event_data, raycast_results_list);   //레이를 발사한 후 히트된 개체들 저장 실행.

        if (raycast_results_list.Count > 0)
        {
            GameObject casted_obj = raycast_results_list[0].gameObject; //가장 위에 있는 오브젝트부터 [0]~ 순으로 저장된다.
            Debug.Log(casted_obj.tag);
            if (casted_obj.CompareTag("UI"))  //가장 위에 있는 오브젝트의 태그가 UI일 경우  <---- 태그를 변경하시면 됩니다.
            {
                return true;
            }
            else //UI가 아닐 경우
            {
                return false;
            }
        }

        return false;
    }

728x90