Unity3d 什么';ScreenToWorldPoint和ScreenPointToWorldPointInRectangle之间的区别是什么?
ScreenToWorldPoint和ScreenPointToWorldPointInRectangle之间有什么区别?我们什么时候应该用哪一种 塞纳里奥: 我正在使用UI系统创建类似炉石的纸牌游戏。我想将鼠标拖动位置转换为世界位置Unity3d 什么';ScreenToWorldPoint和ScreenPointToWorldPointInRectangle之间的区别是什么?,unity3d,Unity3d,ScreenToWorldPoint和ScreenPointToWorldPointInRectangle之间有什么区别?我们什么时候应该用哪一种 塞纳里奥: 我正在使用UI系统创建类似炉石的纸牌游戏。我想将鼠标拖动位置转换为世界位置RectTransformUtility.ScreenPointToWorldPointInRectangle(UIObjectBeingDrawed.transform.parent作为RectTransform、Input.mousePosition、Camer
RectTransformUtility.ScreenPointToWorldPointInRectangle(UIObjectBeingDrawed.transform.parent作为RectTransform、Input.mousePosition、Camera.main、out resultV3)工作正常。但我也尝试了Camera.main.ScreenToWorldPoint(Input.mousePosition)
,它给出了一个不同的“错误”结果
为您提供一个世界位置(返回值),该位置沿通过摄影机(其方法正在被调用的摄影机
的近平面)的光线在某个给定点(位置
参数的x和y分量)和距该近平面的给定距离(位置参数的z分量)拍摄
您应该在以下情况下使用此选项:
位置的x和y以及相机的各种信息来生成光线,而位置的z分量是距离参数
还可以沿光线在给定点(screenPoint
)通过摄影机(cam
)的近平面拍摄提供世界位置(worldPoint
)。只有这一次,它不会给点沿光线的给定距离,而是给你该光线和给定矩形(rect
)之间的交点(如果存在),并告诉你是否存在这样的交点(返回值)
您应该在以下情况下使用此选项:
有一个你感兴趣的特定矩形,与摄影机光线相交
您不知道摄影机或其近平面与交点之间的距离
想知道该矩形是否被光线击中
您可以将此视为一种快捷方式,它使用cam
和screenPoint
制作射线,使用rect
制作平面,还提供了一些关于它是否会在rect边界之外相交的更多信息。因此,一般来说,为什么不使用已经起作用的东西呢^^非常感谢。就我而言,我想我可以用其中任何一个,对吗?但为什么“ScreenToWorldPoint”给出了不同的结果?两者都应该将鼠标在屏幕上的位置转换为世界位置。世界位置不是二维的,因此取决于相机的位置,旋转和ScreenToWorldPoint
中位置的z值与screentoworldpointinrectangle
的矩形位置和旋转结果可能非常不同。仅举一个例子,如果在ScreenToWorldPoint
中z分量有10000个,但在screentoworldpointinrectangle
中,rect直接位于摄影机前面,则它们将非常不同。如果这个答案有帮助,考虑一下!非常感谢。在我的项目中,摄影机的z和到摄影机的rect距离是不同的,我确实将摄影机的x旋转到90(画布设置为“屏幕空间-摄影机”)。但是我仍然不明白为什么在调用ScreenToWorldPoint
和screentoworldpointinrectangle
时x和y是不同的。因为鼠标位置是固定的,世界坐标是相同的,我认为它们应该给出相同的x和y。另外,它们都提供了Camera.main。相机的位置是(0,4.75,0),旋转是(90,0,0)。画布的平面距离为4.75。我测试它,例如,如果鼠标位置是(642.7834.7,0.0),那么ScreenToWorldPoint
给出(0.0,4.8,0.0)和screentoworldpointinrectangle
给出(0.3,0.0,-0.4)。