teh*_*rus 6 python mouse pygame pyopengl
我不是在写游戏,而是使用Pygame进行科学渲染.我希望控件能够像第一人称射击游戏一样工作,这样用户就可以使用熟悉的控件进行导航.
我试图编写代码,使其具有与"天际"或"半条命"中的"外观"功能相同的属性,但鼠标不会移动光标 - 它可以让您以无限的圆圈环顾四周.单击应该没有效果.
控件的第一次尝试:
(游戏循环中的代码)
delta_y, delta_x = pygame.mouse.get_rel()
rotation_direction.x = float(delta_x)
rotation_direction.y = float(delta_y)
Run Code Online (Sandbox Code Playgroud)
(不要问我为什么,但是y和x需要像这样反转以获得预期的外观方向;必须与相机变换实现有关,这不是我的.)
然而,这导致光标位于窗口顶部,当光标到达屏幕边缘时,窗口停止旋转; 即代码报告屏幕上的实际位置.
我尝试在每个游戏循环中"重置"鼠标位置(顺便提一下,隐藏鼠标):
pygame.mouse.set_pos([150, 150])
pygame.mouse.set_visible(False)
Run Code Online (Sandbox Code Playgroud)
但是这会在下一个循环中产生对称的"向后移动"三角形,这意味着你无法在任何地方'看'.
总结一下,我想:
使用Pygame或其他Python黑客攻击的最佳方法是什么?
http://www.pygame.org/docs/ref/mouse.html:
如果鼠标光标被隐藏,并且输入被抓到当前显示,则鼠标将进入虚拟输入模式,其中鼠标的相对移动将永远不会被屏幕的边界停止.查看功能pygame.mouse.set_visible- 隐藏或显示鼠标光标和pygame.event.set_grab(docs) - 控制与其他应用程序共享输入设备以进行配置.