一:操作
创建一个游戏对象(方块)
把代码挂在摄像机上
二:代码
public Camera ca;
public GameObject transformObj;
public GameObject transformObj;
Ray ray;
RaycastHit RayHit;
Vector3 vector3;
GameObject obj;//获取点击到的物体
Vector3 startMousePosition;
RaycastHit RayHit;
Vector3 vector3;
GameObject obj;//获取点击到的物体
Vector3 startMousePosition;
void Start()
{
//一开始的位置=鼠标的位置
startMousePosition = Input.mousePosition;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
ray = ca.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RayHit))
{
obj = GameObject.Find(RayHit.transform.name);
}
}
if (Input.GetMouseButton(0))
{
if (obj)
{
//将物体的世界坐标转为屏幕坐标ScreenToWorldPoint
Vector3 screenObj = Camera.main.WorldToScreenPoint(obj.transform.position);
{
//一开始的位置=鼠标的位置
startMousePosition = Input.mousePosition;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
ray = ca.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RayHit))
{
obj = GameObject.Find(RayHit.transform.name);
}
}
if (Input.GetMouseButton(0))
{
if (obj)
{
//将物体的世界坐标转为屏幕坐标ScreenToWorldPoint
Vector3 screenObj = Camera.main.WorldToScreenPoint(obj.transform.position);
//保存鼠标的屏幕坐标 z使用目标物体的屏幕坐标
Vector3 screenMouse = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenObj.z);
vector3 = Camera.main.ScreenToWorldPoint(screenMouse) - obj.transform.position;
Vector3 currentPosition = obj.transform.position + vector3;
obj.transform.position = currentPosition;
}
}
Vector3 screenMouse = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenObj.z);
vector3 = Camera.main.ScreenToWorldPoint(screenMouse) - obj.transform.position;
Vector3 currentPosition = obj.transform.position + vector3;
obj.transform.position = currentPosition;
}
}
//一开始物体随着鼠标各种旋转
if (Input.mousePosition != startMousePosition && !Input.GetMouseButton(0) && !Input.GetMouseButtonDown(0))
{
Vector3 screenObj = Camera.main.WorldToScreenPoint(transformObj.transform.position);
Vector3 screenMouse = Input.mousePosition;
Vector3 newVector = screenMouse - screenObj;
transformObj.transform.forward = newVector;
}
if (Input.mousePosition != startMousePosition && !Input.GetMouseButton(0) && !Input.GetMouseButtonDown(0))
{
Vector3 screenObj = Camera.main.WorldToScreenPoint(transformObj.transform.position);
Vector3 screenMouse = Input.mousePosition;
Vector3 newVector = screenMouse - screenObj;
transformObj.transform.forward = newVector;
}