我有一个透视摄影机在我的场景中,我有这行代码来获取鼠标位置的世界点,但它总是返回摄影机的位置,尽管有z值。
Vector2 screenPosition = Input.touches[0].position;
Vector2 touchPosition = Camera.main.ScreenToWorldPoint(new Vector3
(screenPosition.x, screenPosition.y, -Camera.main.transform.position.z));
我已经检查了相机,触摸和屏幕位置等变量的值。我也尝试了一些矢量3和矢量2之间的转换,但没有得到解决方案。
先谢了。
2条答案
按热度按时间mi7gmzs61#
如果要将输入的屏幕位置变换为世界位置,可以用途:
touchPosition
更改为Vector3
,因为它位于 * worldSpace中)。这会将输入放置在摄影机的近剪裁平面上。
你可能想使用屏幕位置作为光线投射到世界的来源,这基本上是将光线从相机的位置投射到世界中。如果是这种情况,你会需要这个代码片段:
kxkpmulp2#
我已经意识到这个问题是由脚本中的FOV设置引起的。我猜它在试图设置FOV并在同一帧中找到鼠标位置的世界点时不知何故导致了计算错误。这里的代码在没有FOV部分的情况下也能正常工作。谢谢你的帮助。