3D场景中的物体跟随鼠标移动

来源:互联网 发布:office mac破解版 编辑:程序博客网 时间:2024/05/22 17:47

public IEnumerator OnMouseDown() { Debug.Log(“OnMouseDown”); //获取物体从世界转化为屏幕的坐标 Vector3 CubePos = Camera.main.WorldToScreenPoint(transform.position);
//获取鼠标从屏幕转化为世界的坐标 Z轴为物体屏幕坐标的Z
Vector3 MousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, CubePos.z));
//获取物体自身与鼠标在世界坐标的距离
Vector3 Offset = transform.position - MousePos;
Debug.Log(Offset);
while (Input.GetMouseButton(0))
{
//得到现在鼠标的2维坐标系位置
Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, CubePos.z);
//将当前鼠标的2维位置转换成3维位置,再加上鼠标的移动量
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + Offset;
//curPosition就是物体应该的移动向量赋给transform的position属性
transform.position = curPosition;
yield return null;

    }}

}