Unity3d 记录1

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

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


在此只是记录一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值