记一次尝试用脚本模拟手柄打游戏(一)
最近打游戲累了
想自動(dòng)化打游戲
最開始是打算模擬鍵鼠方案的,但是吧,很快就遇到了問題。
對(duì)于常規(guī)的窗口來(lái)講,ctypes庫(kù)足以模擬鍵鼠輸入了
但是進(jìn)到第三人稱視角的游戲里面吧,鍵盤模擬還好說(shuō),鼠標(biāo)移動(dòng)他視角不動(dòng)啊
這就很令人頭疼了。
我又檢測(cè)了一下鼠標(biāo)的位置,發(fā)現(xiàn)鼠標(biāo)的坐標(biāo)其實(shí)一直鎖定在窗口的正中心。
也就是說(shuō)游戲檢測(cè)鼠標(biāo)移動(dòng)來(lái)調(diào)整視角是不能通過(guò)腳本讓鼠標(biāo)向某個(gè)坐標(biāo)移動(dòng)來(lái)實(shí)現(xiàn)的。
可能可以從更底層的驅(qū)動(dòng)來(lái)模擬鼠標(biāo)運(yùn)動(dòng)進(jìn)而實(shí)現(xiàn)這個(gè)操作,但是我決定何不用一個(gè)更簡(jiǎn)單的方法——模擬手柄。
自動(dòng)化手柄操作
vjoy
網(wǎng)上搜了一下,第一個(gè)考慮用的vjoy
python需要用的庫(kù)是pyvjoy
當(dāng)然還需要搭配一個(gè)測(cè)試工具來(lái)看我設(shè)置手柄對(duì)不對(duì)
測(cè)試工具
運(yùn)行后發(fā)現(xiàn)
Unable to load vJoy SDK DLL. Ensure that vJoyInterface.dll is present回去看github頁(yè)面發(fā)現(xiàn)
Currently vJoyInterface.dll is looked for inside the pyvjoy directory only so place the desired version of that file there to use. (Note: this library currently only works with the x86 dll!)
也就是說(shuō)需要把dll放在pyvjoy的目錄下,注意是pyvjoy的目錄下,不是新寫的代碼的目錄下。
此時(shí)再運(yùn)行剛才的代碼,可以在測(cè)試工具中看到搖桿的移動(dòng)
進(jìn)入一下debug模式,讓他停在這里
打開steam的控制器頁(yè)面可以看到已經(jīng)檢測(cè)到了vjoy手柄
通過(guò)set_axis可以讓steam把搖桿識(shí)別出來(lái)。看來(lái)問題不大
但是啊,這個(gè)時(shí)候我就又遇到問題了,那就是vjoy這玩意他只有一個(gè)搖桿啊,我要設(shè)置右搖桿怎么辦呢?
嗚。。。
好像還是有解決辦法,但是秉著不要重復(fù)造輪子的思想,畢竟時(shí)間有限每天還要正經(jīng)工作還要打游戲,于是我又去找有沒有什么直接模擬XBOX360或者XBOX ones手柄的方法,反正你得給我來(lái)個(gè)XINPUT對(duì)吧。
然后我就發(fā)現(xiàn)了一個(gè)東西,vgamepad
vgamepad
vgamepad是用來(lái)模擬XBox360 gamepad的,說(shuō)明文檔也比長(zhǎng)久不更新的pyvjoy詳細(xì)很多。
當(dāng)然了,這個(gè)東西只支持windows。
如果你和我一樣嘗試在mac上通過(guò)pip安裝,就會(huì)出現(xiàn)下面的情況。
windows就好說(shuō)了,安裝好然后重啟。(他會(huì)自動(dòng)給你安裝viGem的,然后要求你重啟)
我們打開一個(gè)xbox控制器測(cè)試軟件來(lái)試試看。
最開始是沒插手柄的,然后我們創(chuàng)建一個(gè)手柄
腳本結(jié)束后這個(gè)設(shè)備會(huì)被拔出,然后就檢測(cè)不到手柄了。
目前看來(lái)這個(gè)手柄的方案應(yīng)該能用。
總結(jié)
以上是生活随笔為你收集整理的记一次尝试用脚本模拟手柄打游戏(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于微信平台的“快递超市”设计
- 下一篇: 武汉大学计算机应用技术考研经验分享,计算