【问题标题】:Problem with ScreenToWorldPoint when using multiple monitors使用多台显示器时 ScreenToWorldPoint 出现问题
【发布时间】: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


【解决方案1】:

解决方案:

Screen.currentResolution 检测到正确的分辨率,但 Camera.main.pixelWidthCamera.main.pixelHeightCamera.main.ScreenToWorldPoint(Input.mousePosition); 使用它)由于某种原因检测到未使用显示器的分辨率

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多