在制作拖拽的时候 网上好多例子 是用Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition)
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.Log(ray);
看API上面 写着ray 的origin 返回的值是 world坐标系的
考虑下
注:ScreenPointToRay 只是near面上的 坐标信息 转换为 ray
1. 摄像机是透视投影的
那么使用 Ray的方式进行拖拽,如果你的模型在near面上,那你发现ray.origin的值是对的
如果模型的z 不是near面上的呢?
那么考虑下这个
Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
Vector3 mScreenPos = new Vector3(Input.mousePosition.x,Input.mousePosition.y,screenPosition.z);
Vector3 worldpos = Camera.main.ScreenToWorldPoint(mScreenPos);
Debug.Log(worldpos);
2.摄像机是正交的
那么这样进行拖拽是完全没有问题的
在此只是记录一下。