유니티 빌드시 터치 좌표? 컬라이더 문제.
조회수 2931회
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
{
}
}
}
옵션창 같은 패널들을 띄웠을 때 창을 제외한 다른 부분을 클릭할 시 창을 끌 수 있도록 하려합니다.
유니티에선 이상없이 진행이되나 빌드 후 모바일에선 마치 컬라이더가 다른 부분에 있듯이 창을 눌러도 꺼지거나, 창이 아닌 부분을 눌러도 꺼지지않는 경우가 발생합니다.
아래 부분에서 펭귄모양과 그 창이 옵션창이고, 창 크기만큼의 컬라이더가 적용되어 있습니다.
해서 터치 시에 컬라이더가 있다면 창이 꺼지지 않고 컬라이더가 없다면(배경이라면) 창이 꺼지지 않습니다.
하지만 모바일에서 빌드 후에는 아래 빨간 부분을 클릭 시 무조건 꺼지는 상황이 발생합니다.
마치 오브젝트는 그대로이나 컬라이더 오프셋이 북동쪽으로 밀린듯이 말이죠.
모든 씬에서 같은 문제가 발생하는데 에디터에선 이상없이 잘 됩니다.
어떤 문제가 있는걸까요.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
정말로 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.8.31 11:54
- 우선 문제는 다른 문제가 아니라 단순한 카메라 설정 문제였습니다. 알 수 없는 사용자 2016.8.31 15:46
댓글 입력