본문 바로가기

IT/유니티

WorldToScreenPoint 그리고 ScreenPointToLocalPointInRectangle

오늘은 아주 간단한것을 알아보자.


유니티의 좌표계는 조금은 특이하다.

특히나 나같이 기본 네이티브에서 개발하던 사람입장에서는 더더욱 그런거 같다.


왜냐하면 좌표계가 하나가 아니다. 

전체 좌표계와 스크린 좌표계가 존재한다.


용어의 선택이 옳바른지는 모르겠지만, 영문을 해석하면 비슷한거 같다.


픽셀단위의 좌표계와 유니티 내부의 스크린좌표계가 존재한다.


보통 에디터에서 작업할때는 스크린좌표계를 사용하는 것이고,

UI에서는 픽셀단위의 좌표계를 사용한다고 생각하면 쉬울것이다.


왜 그렇게 사용하는지는 작업을 하다보면 자연스럽게 이해가 된다.


하지만 무제는 전화를 할때 어떻게 해야하느냐 라고 할수 있다.

UI작업이나 터치작업을 하면 반드시 이 좌표값들을 변환해야할 경우가 생긴다.

그래서 유니티에는 다음과 같은 두개의 함수를 제공하고 있다.


WorldToScreenPoint 그리고 ScreenPointToLocalPointInRectangle



WorldToScreenPoint 의 사용예제는 다음과 같다.

Vector3 screenPos = camera.WorldToScreenPoint(target.position);


ScreenPointToLocalPointInRectangle의 예제는 다음과 같다.

RectTranformUtility.ScreenPointToLocalPointInRectangle( transform, screenPoint, canvasCamera, out localPoint );