Unity3d 记录1

来源:互联网 发布:淘宝好友代付怎么使用? 编辑:程序博客网 时间:2024/06/04 18:56

在制作拖拽的时候 网上好多例子 是用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.摄像机是正交的

那么这样进行拖拽是完全没有问题的


在此只是记录一下。

原创粉丝点击