我不是在写游戏,而是使用Pygame编写科学渲染器。我希望控制方式与第一人称射击游戏类似,这样用户就能使用一组熟悉的控件进行导航。
我试过编写代码,使其具有像《天际》或《半条命》中“查看”功能的属性,但鼠标无法移动光标 - 它可以让您在无限循环中四处观看。单击没有任何效果。
控制方式的第一次尝试:
(游戏循环内的代码)
(don't ask me why, but y and x need to be reversed like this to get the expected look directions; must be something to do with the camera transform implementation, which isn't mine.)
然而,这会导致光标停留在窗口上方,当光标到达屏幕边缘时,窗口停止旋转;即代码正在报告屏幕上的实际位置。
我尝试在每个游戏循环中“重置”鼠标位置(顺便隐藏鼠标):
但是这会在下一个循环中生成一个对称的“回到起点”的增量,意味着你无法“看”任何地方。
总结一下,我想要:
我试过编写代码,使其具有像《天际》或《半条命》中“查看”功能的属性,但鼠标无法移动光标 - 它可以让您在无限循环中四处观看。单击没有任何效果。
控制方式的第一次尝试:
(游戏循环内的代码)
delta_y, delta_x = pygame.mouse.get_rel()
rotation_direction.x = float(delta_x)
rotation_direction.y = float(delta_y)
(don't ask me why, but y and x need to be reversed like this to get the expected look directions; must be something to do with the camera transform implementation, which isn't mine.)
然而,这会导致光标停留在窗口上方,当光标到达屏幕边缘时,窗口停止旋转;即代码正在报告屏幕上的实际位置。
我尝试在每个游戏循环中“重置”鼠标位置(顺便隐藏鼠标):
pygame.mouse.set_pos([150, 150])
pygame.mouse.set_visible(False)
但是这会在下一个循环中生成一个对称的“回到起点”的增量,意味着你无法“看”任何地方。
总结一下,我想要:
- 检测从设备报告的实际鼠标移动
- 不移动/显示任何操作系统光标
- 不在“屏幕边缘”剪辑