刚做完一个项目,里面有用到Untiy3D射线的相关内容,里面有个小坑记录一下,也把我遇到的这个问题和大家分享下。
使用Unity3D的屏幕射线时,会得到两个值,一个是Origin,是射线的源点,另一个是Direct,代表了射线的方向,这两个值均为Vector3类型。
根据数学知识,射线的表示为P(t)=Origin+t*Direct,你以为就这么容易吗,NO!!!!
重点:射线的Direct表示的是以Origin为原点的方向!!!所以P(t)这个等式在这种情况下并不成立。
那怎么获得射线上的点呢,Unity3D里面有个刚刚好的接口,是Ray.GetPoint(t),这样得到的点即为射线上的点。
说回来,那怎么得到射线方向呢(世界坐标系下的)=> direct=Ray.GetPoint(t)-Origin
这样就可以使用P(t)=Origin+t*direct这个公式了。
感觉自己绕了个圈圈,如果有更好的方法,欢迎留言。
原文地址:https://www.cnblogs.com/zly24432/p/10567903.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。