【发布时间】:2021-11-10 09:54:49
【问题描述】:
我正在使用正交摄像头编写一个自上而下的射击游戏,当我只使用一台显示器时,一切正常。 但是,当我在扩展模式下(一个 1920x1200 和另一个 1366x768)开始游戏时,鼠标在世界单位中的位置是错误的。
这是我用来将像素位置转换为世界单位的函数:Camera.main.ScreenToWorldPoint(Input.mousePosition);
当前使用的显示器的分辨率和鼠标的像素位置测量正确。光标的实际位置和以世界单位为单位的测量位置之间的偏移量随着我将光标从左下角稍右一点的点移开(在这个位置(大约在 180,0 像素位置)测量和实际光标位置相同)。如果我在插入第二台显示器之前启动游戏,也不会出现此问题。
【问题讨论】:
-
你的相机是正交的吗?否则请记住,
Camera.main.ScreenToWorldPoint(Input.mousePosition);返回相机 XY 平面上的位置,忽略任何深度(Z 分量)......否则您将需要传入具有相应深度 Z 分量的Vector3“前面的距离”相机”喜欢new Vector3(Input.mousePosition.x, Input.mousePosition.y, desiredPositionDepth) -
哦,您是否扩展或复制显示?
标签: c# unity3d multiple-monitors