首页 > 解决方案 > 如何从 Python 向游戏发送方向盘/操纵杆输入?

问题描述

我需要将机器学习模型中计算的一系列方向盘输入:(方向盘、油门、刹车)发送到游戏中,以实现自动驾驶。我已经使用pynput发送密钥并使用 ['w','a','s','d'] 控制汽车,但我想要一种更顺畅的方式来控制汽车,因此我正在寻找一种方法在 python 中模拟操纵杆。所以,我可以为方向盘和加速器发送模拟输入。

我以前使用这种类型的代码来输入控件

from pynput.keyboard import Key, Controller
import time

keyboard = Controller()
keyboard.press('w')
time.sleep(1)
keyboard.release('w')

标签: pythonpygamecomputer-visioncontrols

解决方案


我用Vjoy模拟了一个游戏杆并创建了一个虚拟操纵杆;使用FreePie作为 Feeder 应用程序,并编写了一个 Python 脚本来将每个轴的输入值发送到 Vjoy。我的 Vjoy 脚本:- 目前我使用鼠标移动来发送 X 轴和 Y 轴的值,但您可以使用任何您喜欢的方式。

from System import Int16

if starting:
    system.setThreadTiming(TimingTypes.HighresSystemTimer)
    system.threadExecutionInterval = 5
    x = 0
    y = 0
    max = 1
    min = -max

    
    vjoy = vJoy[0] # controlling Vjoy Device 0
    sensX = 50
    sensY = 50

y -= mouse.deltaY * sensY
x += mouse.deltaX * sensX

if x > max:
    x = max
elif x < min:
    x = min

if y > max:
    y = max
elif y < min:
    y = min

vjoy.x = x
vjoy.y = y
diagnostics.watch(vJoy[0].x)
diagnostics.watch(vJoy[0].y)

出于自动驾驶汽车的目的,您可以编写另一个 python 脚本,将输入值(对于 x 轴和 y 轴)提供给该脚本。


推荐阅读