[Unity]마우스로 오브젝트 움직이기, Camera.main.ScreenToWorldPoint, Camera.main.WorldToScreenPoint, 유니티

2020. 6. 1. 18:38UNITY/공부

obj = Camera.main.WorldToScreenPoint(transform.position);

Vector3 mouseposition = new Vector3(Input.mousePosition.x,Input.mousePosition.y, obj.z);

Vector3 objPosition = Camera.main.ScreenToWorldPoint(mouseposition);

transform.position = objPosition;

 

이번엔 마우스로 오브젝트를 움직이는 것을 해보겠습니다

 

우선 스크립트 하나 추가해주시고요

스크립트 추가

 

스크립트에 대해 설명해드리겠습니다.

스크립트

obj = Camera.main.WorldToScreenPoint(transform.position);

WorldToScreenPoint 라는 것은 월드 좌표에 있는 점을 로컬좌표(스크린좌표)로 바꿔주겠다는 의미입니다.

즉 유니티 공간 어딘가에 오브젝트가 가지고 있는 고유의 좌표를 사용자가 보는 화면에서의 좌표로 바꿔준다는 겁니다.

 

 

 

Vector3 mouseposition = new Vector3(Input.mousePosition.x,Input.mousePosition.y, obj.z);

mouseposition에 클릭한 마우스의 x, y 좌표를 입력받고 z좌표는 원래 가지고 있던 좌표를 그대로 사용합니다.

즉, z좌표(카메라와의 거리)는 고정이라는 의미입니다.

 

 

Vector3 objPosition = Camera.main.ScreenToWorldPoint(mouseposition);

objPosition에 위에서 받은 mouseposition좌표 유니티 세계 내의 월드 좌표로 바꾸어준다는 말입니다.

 

 

transform.position = objPosition;

이제 위치를 저장해줍니다

컴포넌트 추가

이제 원하는 오브젝트에 스크립트를 추가하면 끝

 

쉽죠?