在我的播放器控制器的更新中,我正在做:
Cursor.lockState = CursorLockMode.Locked;
Debug.Log(Input.mousePosition);
我已将游戏设置为1920x1080
(Debug.Log(Screen.width + "x" + Screen.height)
确认)。
结果日志写入(960.0, 560.0)
(对于鼠标位置),而我强烈期望(960.0, 540.0)
(在y方向偏离20px)。
Unity版本为2017.3.0f3 Personal
,如果相关,则操作系统为Windows 10 x64。
我不知何故错过了这种预期的行为吗?这是一个我应该报告的真正的错误(在哪里?)?
答案 0 :(得分:1)
According to the doc of CursorLockMode, the lock option will
Lock cursor to the center of the game window
Note that it says game window, not screen. Do you per chance have a 40 pixel menu bar on top of the window? I think that your mouse is in the center of the window, that's is. So that would be to expected behaviour
答案 1 :(得分:0)
我看到可能的原因:
由于您使用的是Input.MousePosition,也许鼠标会以某种方式错误地放置?如何将鼠标位置放在屏幕中间?如果你显示这段代码会很好。
鼠标光标热点会将结果偏移20像素,因为根据鼠标设置并使用它没有正确设置。以下是热点的作用说明: hotspot 纹理左上角的偏移量,用作目标点(必须在光标范围内)。
关于热点的来源:https://docs.unity3d.com/ScriptReference/Cursor.SetCursor.html
我看到可能的解决方案:
调整鼠标位置的放置方式。
添加缓冲区变量,以便始终从鼠标位置扣除-20。
调整热点。
你不使用任何光线投射吗?如果是,请显示该代码。