유니티 캔버스UI에서 화면 클릭이나 드래그 할때 좌표가 이상해요.
View 3,263 | 작성일2022.04.02 04:30
관련링크
본문
유니티 캔버스UI 에서 드래그 이벤트를 받아서 이미지를 드래그 시키는 간단한 로직을 구현중에..
드래그 이벤트야 using 새게 써주고 클래스에 핸들러 상속만 추가해주면 일이 끝나는데
OnDrag eventData 의 좌표가 이상한겁니다.. 막 날라가고 난리도 아닌데..
이 문제는 제가 유니티 UI를 다중 해상도를 적용하기 위해서 해놨던 Canvas 설정에
RenderMode 가 Screen Space - Camera 로 해놨을때 좌표변환이 필요하다는 것을 몰랐습니다.
결론적으로 이 문제를 해결하기 위해서는 EventData 에서 나온 포지션을 그대로 쓰면 안되고
그 좌표값을 Camera 에서 월드좌표로 변환을 해줘야 합니다.
즉 좌표를 쓸때 다음과 같은 구문으로 변환을 해주셔야 합니다.
Vector2 currentPos = worldCamera.ScreenToWorldPoint(eventData.position); |
여기서 월드 카메라는 캔버스에서 사용한 메인 카메라를 넣어주시면 되고요.
이렇게 하면 evenData에서 받은 좌표를 화면상의 좌표로 변환을 해주기 때문에 정상적으로 UI상의 좌표로 변환이 됩니다.