python - 如何从 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')
解决方案
我用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 轴)提供给该脚本。
推荐阅读
- javascript - Promise.allSettled 的替代方案
- python - 无论如何在一个项目中运行 tensorflow1 和 tensorflow2 吗?
- gitlab - 启用对私有 GITLAB 存储库的 wiki 的公共只读访问
- vue.js - Nuxt.js 中的 Vuex 默认存储
- django - Django-如何将最后上传的文件放入模板中?
- reactjs - React Hooks Redux,如何将调度动作分离到特殊动作文件中
- wildfly - 有没有办法使用外部配置运行 Wildfly 可启动 jar?
- javascript - 循环来自 Api 的数据
- php - Mailchimp 基于标签的不同选择
- kubernetes - 是否可以使用 api 在 kubernetes 中编辑配置映射?