今天我们要讲解的是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大家有点难理解,其实我也比较难理解后面查资料才得知的。接下来我们就开始我们的核心代码了,不过要先画辅助线,如图所示:
Unity用lua实现透视摄像机的屏幕坐标换算到世界坐标的解决方案
最新推荐文章于 2024-08-06 23:13:15 发布
本文详细介绍了在Unity中如何利用Lua实现从屏幕坐标到透视摄像机世界坐标的转换。通过分析Unity的ScreenToWorldPoint接口限制,结合几何知识,计算出屏幕点击点在世界坐标系中的精确位置,涉及屏幕宽高、摄像机高度、视角等参数的运用。
摘要由CSDN通过智能技术生成