如果有同样问题的人会发现这个线程:
我用 vJoy、pyVJoy 和 x360ce 解决了这个问题。
vJoy 提供了 SDK 和驱动程序来模拟输入设备。你可以有操纵杆、游戏手柄等。
PyvJoy 允许您访问这些驱动程序并模拟 python 内部的输入。https://github.com/tidzo/pyvjoy https://github.com/tidzo/pyvjoypyvJoy 使用 0 到 32767 之间的值作为“模拟”摇杆。
例如,要将 xbox 控制器的左拇指操纵杆置于中立位置,请将 X 轴和 Y 轴置于 32767 的 1/2 中。
因此,对于输入值在 0 到 1 之间的情况,我将它们与该值相乘。
在我的代码中它看起来有点像这样:
MAX_VJOY = 32767
self.j = pyvjoy.VJoyDevice(1)
def play_function(self,X,Y,Z,XRot):
self.j.data.wAxisX = int(X * self.MAX_VJOY)
self.j.data.wAxisY = int(Y * self.MAX_VJOY)
self.j.data.wAxisZ = int(Z * self.MAX_VJOY)
self.j.data.wAxisXRot = int(XRot * self.MAX_VJOY)
j.update()
您还可以通过这种方式更新“二进制”/“数字”按钮,pyvjoy github 页面有更多示例。
尝试使用此操纵杆应用程序进行校准:http://www.planetpointy.co.uk/joystick-test-application/ http://www.planetpointy.co.uk/joystick-test-application/
最后一部分是使用X360CE,所做的就是将vJoy“DigitalInput”Devide变成XInput设备。因此,PC/游戏认为它是一个实际的 Xbox 360 或 Xbox One 控制器。最后一部分仅适用于某些仅允许官方 Xbox 控制器的游戏,例如 GTA 5。
您可以从这里获取X360CE:http://www.x360ce.com/ http://www.x360ce.com/
所有这些结合起来让我可以通过 python 玩这些游戏。我了解到使用 WASD 来训练神经网络效果不太好,因为它总是表现得极端,因为它只允许 1 或 0 按下按钮。通过这些控件,您可以获得更流畅的游戏控制。