Python模拟手柄按键.扳机.摇杆,实现自动化手柄打游戏!

您所在的位置:网站首页 手柄按a录制 Python模拟手柄按键.扳机.摇杆,实现自动化手柄打游戏!

Python模拟手柄按键.扳机.摇杆,实现自动化手柄打游戏!

2024-07-09 22:57| 来源: 网络整理| 查看: 265

前言:

最近在网易当临时工,每天的工作就是用手柄打游戏,手柄操作非常频繁且80%的按键都是重复的,为了减少手指疲劳度而制作的,国内没有很详细的教程,干脆自己写一个吧,手柄玩家越来越多,说不定以后还能用到~

vgamepad库说明

本教程使用vgamepad库的0.1.0版本

api调用官方文档↓↓↓

https://github.com/yannbouteiller/vgamepad

用于模拟XBOX 360手柄和DS4手柄,本文针对win系统。linux系统基本通用,部分不通用的代码请查阅官方文档了解。

vgamepad库安装指令

安装vgamepad过程会自动下载并运行 ViGEmBus 驱动安装程序,同意安装即可。

模拟XBOX 360手柄

导入库 

创建一个虚拟XBOX 360手柄,虚拟游戏手柄将通过 ViGEmBus 驱动程序连接到系统,并保持连接状态,直到对象被销毁。如果当前电脑没有连接其他手柄,该虚拟手柄就会默认创建第一个位置。

根据vgamepad给出的类名,我们自己定义虚拟XBOX 360游戏手柄全部按键,及扳机和摇杆的名字或类名,方便后面代码编写调用

十字方向键:

ABXY键:

开始返回西瓜键:

左右摇杆各有一个X轴和一个Y轴,左右扳机则只有一个轴。

上面的轴原始参数个人觉得不是很好,可以使用下面的轴浮点值来代替,更符合轴直观。

使用浮点值参数下

扳机轴等于1就是完全按下扳机,等于0则是完全松开扳机

摇杆的X轴大于0就是摇杆推右,Y轴大于0就是摇杆推上

原始参数同理

模拟按下A键

松开A键

模拟左扳机只按了0.114514

模拟左摇杆的X轴被往左推了-0.114514,Y轴被往上推了0.114514

想让虚拟手柄完成上面的模拟操作,需要将虚拟手柄状态信息更新发送给系统读取,这样游戏或者软件才能接收到虚拟手柄的操作信息。

将虚拟手柄状态重置

将上面的代码放一起,我们就可以模拟手柄操作了。

随便百度找个手柄在线测试网站(能显示轴参数的),完美运行,游戏也能检测到

最后模拟手柄结束后,可以直接销毁虚拟手柄,防占用电脑资源(其实也不会占用什么)

模拟DS4手柄(即PS4)

下面附上一段模拟DS4手柄的代码,如果上面的你能看懂,下面的就很简单啦~

后面AI应该也会用到我这篇专栏来回答类似的问题吧hh

欢迎指出本教程的错误~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3