}

Unity ScreenToWorldPoint & WorldToScreenPoint & ViewportToWorldPoint & WorldToV

ViewportToWorldPoint  &  WorldToViewportPoint  활용법

 
오브젝트가 화면(보여지고 있는 화면)에서 벗어나게 하지 않게 하고 싶을 때 사용하면 된다
 

etc-image-0

이렇게 Cube오브젝트는 화면밖으로 나가지 않는다

etc-image-1

전 시간에도 말했다시피 ViewPort는 비율이므로 0~1사이 값으로 컨트롤한다

etc-image-2

Cube의 World Transform Position을 ViewPort 좌표계의 값으로 변환한다
 
그러면 ViewPort좌표계에 0~1비율 사이에 존재하게 되는데 이때 x좌표가 0 or 1을 벗어나려고 하면 최대치를 0과 1로 하여 화면에 고정시킨다
 
그다음으로 ViewPort좌표계의 위치를 다시 3차원의 좌표계 World 좌표계로 변환해준다
 
그거를 transform에 대입한다
 
 
 


ScreenToWorldPoint & WorldToScreenPoint  활용법

 
가끔 보여지고 있는 화면에서만 오브젝트를 생성하고 싶을 때가 있다

그럴 때 사용하면 좋은 방법이다

etc-image-3

먼저 Debug를 통해 World -> Screen Position이 어떻게 바뀌는지 보자

etc-image-4

해상도가 지금 1920X1080으로 되어 있어서
오브젝트의 Screen 좌표계의 위치는 (960, 547)이다 Z축은 카메라와의 거리이다
 

etc-image-5

화면 안에서만 오브젝트가 돌아다니게 된다
 

etc-image-6
코드
etc-image-7

만약 Y(높이)는 그대로 두고
혹은 다른 포지션은 고정으로 두고 좌표들을 바꾸고 싶으면 약간의 변형을 거치면 된다
 

etc-image-8

나 같은 경우 Y값을 고정시켜주고 싶었기 때문에 transform.position = new Vector( x, 1f ,z);로 고정해주었다!