Unity用lua实现透视摄像机的屏幕坐标换算到世界坐标的解决方案

本文详细介绍了在Unity中如何利用Lua实现从屏幕坐标到透视摄像机世界坐标的转换。通过分析Unity的ScreenToWorldPoint接口限制,结合几何知识,计算出屏幕点击点在世界坐标系中的精确位置,涉及屏幕宽高、摄像机高度、视角等参数的运用。
摘要由CSDN通过智能技术生成

今天我们要讲解的是unity的ScreenToWorldPoint接口,其实这个接口已经给我们实现了所有的过程为什么我们还要写一篇这样的文章来介绍它呢?那是因为ScreenToWorldPoint这接口的参数是一个Vector3,而不是屏幕坐标Vector2。下面看图:
在这里插入图片
首先我们摄像机画面中点任意一点E点,然后映射到世界坐标系的地面上C点,ScreenToWorldPoint但是这个接口的Vector3.z=EC,接下来我们算出EC的长度。这里有几个假设,假设地面的高度是0,摄像机是透视摄像机Perspective,摄像机的Far足够远就像上面图所示,这个是X轴的截面图。接下来我们就要看我们有哪些已知条件,如图所示:
在这里插入图片描述
我们已知:屏幕点击点坐标screen_pos=Vector2,屏幕宽高,摄像机高度EF=camera.transform.position.y,∠b=camera.transform.euerAngles.x,∠e=fieldOfView/2,这些都是我们已知的。∠e大家有点难理解,其实我也比较难理解后面查资料才得知的。接下来我们就开始我们的核心代码了,不过要先画辅助线,如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值