개발메모/Unity

3D 카메라(Perpendicular Projection)에서 ScreenToWorldPoint() 가 Input.mousePosition을 제대로 잡지 못하는 이유

RideAbove 2023. 10. 23. 15:56
반응형

3D 카메라 (perpendicular projection) 에서 ScreenToWorldPoint() 함수는 Vector3를 인자로 받는데,

 

Vector3의 x,y값은 스크린 좌표이고, z값은 카메라로부터의 거리를 나타낸다. 

 

만약 z값이 0이라고 한다면 카메라로부터의 거리가 0이므로 카메라의 위치를 나타내게 된다.

 

카메라로부터의 거리를 나타내는 카메라 object의 z값을 인자로 지정해주어야 제대로 동작한다.

 

예를 들어서 카메라의 위치가 (10, 2, -10) 이라고 한다면

 

camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10f));

위와 같은 코드를 작성해 주어야 한다.

 

 

 

 

Reference:

https://discussions.unity.com/t/screentoworldpoint-not-working/53339

 

ScreenToWorldPoint() not working

Hi, I’m currently experimenting with ScreenToWorldPoint(), and something just doesn’t seem to be working right… Whenever I use this code: function Update() { Debug.Log(camera.ScreenToWorldPoint(Input.mousePosition)); } It just shows (0.0 ,125.0, 0.0)

discussions.unity.com

 

 

반응형