유니티 빌드시 터치 좌표? 컬라이더 문제.


    Ray ray;
    RaycastHit2D hit;

      void Update()
    {
        if (latestPanel != null)
        {
            if (Input.GetMouseButtonDown(0))
            {
                ray = Camera.main.ScreenPointToRay(Input.mousePosition);

                hit = Physics2D.Raycast(ray.origin, ray.direction);

                if (hit.collider == null || hit.collider.name != latestPanel.name)
                {
                    i++;
                    latestPanel.GetComponent<panelScript>().Close(i);
                    if (i == 2)
                    {
                        i = 1;
                    }
                }
                else
                {
                }
            }
        }

옵션창 같은 패널들을 띄웠을 때 창을 제외한 다른 부분을 클릭할 시 창을 끌 수 있도록 하려합니다.

유니티에선 이상없이 진행이되나 빌드 후 모바일에선 마치 컬라이더가 다른 부분에 있듯이 창을 눌러도 꺼지거나, 창이 아닌 부분을 눌러도 꺼지지않는 경우가 발생합니다.

아래 부분에서 펭귄모양과 그 창이 옵션창이고, 창 크기만큼의 컬라이더가 적용되어 있습니다.

해서 터치 시에 컬라이더가 있다면 창이 꺼지지 않고 컬라이더가 없다면(배경이라면) 창이 꺼지지 않습니다.

이미지

하지만 모바일에서 빌드 후에는 아래 빨간 부분을 클릭 시 무조건 꺼지는 상황이 발생합니다.

마치 오브젝트는 그대로이나 컬라이더 오프셋이 북동쪽으로 밀린듯이 말이죠.

모든 씬에서 같은 문제가 발생하는데 에디터에선 이상없이 잘 됩니다.

어떤 문제가 있는걸까요. 이미지

  • 2016년 08월 26일에 작성됨

조회수 156


1 답변


좋아요
0
싫어요
채택취소하기

정말로 collider가 옆으로 이동했는지는 Debug.Log(hit.collider.name);으로 출력해 보시면 어떨까요?

그런데 UI를 구현하는데 Raycast를 이용해서 Update를 통해 처리하는건 너무 비효율적인것 같습니다. 공식 사이트의 강의 목록은 영어이지만, 동영상들에는 한글 자막이 있으니 추천합니다. https://unity3d.com/kr/learn/tutorials/topics/user-interface-ui

혹시 이미 Canvas등 UI Component로 화면을 그리신거라면 화면 밖을 터치하는걸 확인하기 위해 raycast를 쓰는것 보다는 배경을 덮는 이미지에 EventTrigger를 써 보시는게 좋을것 같습니다.

  • 2016년 08월 30일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 화면을 덮는 방법이 낫겠네요. 왜 이생각을 못했는지 감사합니다    정우진   2016.8.31 11:54     
  • 우선 문제는 다른 문제가 아니라 단순한 카메라 설정 문제였습니다.    정우진   2016.8.31 15:46     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close