Unity ScreenToWorldPoint & WorldToScreenPoint & ViewportToWorldPoint & WorldToV

ViewportToWorldPoint  &  WorldToViewportPoint  활용법

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

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

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

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


ScreenToWorldPoint & WorldToScreenPoint  활용법

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

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

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

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

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

코드

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

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