Unity开发 罗技方向盘 G29 白话版
Unity開發羅技方向盤 白話版
- 目錄
- 前言
- 準備工作
- 測試階段
- 運行失敗的解決
- 接入Unity
- Demo的使用方法
- 接入自己的項目
- 問題與總結
- 問題
- 總結
目錄
前言
最近在做羅技G29的方向盤的Unity開發,因為設備很貴(2000+)所以在買之前先進行了一波調研,看看用Unity開發的可行性。在翻看大量的文章之后我發現大多數文章的內容都是復制粘貼的,很蠢。在實際的開發中遇到了許多坑,我自己一點點爬了出來。想把這些個人的心得寫出來,省的后人再去踩這些坑。
居然還有好多文章講解用Unity的InputManager來調節摁鍵。人家羅技都提供SDk了 還教別人用Input.GetKeyDown(KeyCode.JoystickButton0) 這種方法。看著就氣。還有什么Unity最多支持24個摁鍵的 離合要自己寫的。。。不要坑我們萌新了好么。
萌新一名 有錯誤還請大神指點。
就是因為萌新 好多東西需要百度,百度一個不會的 會出現三個不會的名詞來給你解釋,到頭來不會的東西更多了,所以這篇文章會以掰皮說陷的方式講解
不要問我 為什么要這樣做,這么做對了就行 詳細的自己去看英文文檔去
準備工作
羅技官網下載最新版的SDK
我在用的時候是8.75.30版 可以參考下
Asset Store下載Logitech Gaming SDK
我在開發時是1.7版本
把這個在AssetStore下載號的包 導入Unity
注意第一個坑
找到羅技官網下載的SDK文件夾 用該文件夾下的LogitechSteeringWheelEnginesWrapper.dll文件 替換掉 你的工程名\Asset\Logitech SDK\目錄下 同名文件
目前版本AssetStore上的SDK有這個問題 不替換掉會報錯,而且這個問題在上一個版本的SDK中也存在(就是羅技的人懶得改)。未來可能會在某個版本修復這個問題吧。
下載Logitech游戲軟件
這里第二個坑
羅技這個驅動軟件越做越爛。 這里盡量下載 Logitech游戲軟件 不要選擇Logitech G Hub
G Hub 下載不穩定有的時候會很慢 而且有的時候會識別不到方向盤,所以還是選擇老版本的Logitech游戲軟件吧
這個坑在于這個軟件是 區分Windows版本的 win7 win8 win10 32位 64位 會有區別 請選擇跟自己電腦適配的版本
我這里開發使用是 Win10 64位
測試階段
開始測試時 請先打開Logitech游戲軟件 保持后臺運行,先確保游戲軟件已經識別到了 方向盤。
將\Assets\Logitech SDK\Script Sample下的LogitechSteeringWheel.cs腳本添加到攝影機上(這個文件下的其他腳本是控制其他的輸入設備的,有興趣可以了解一下)。
運行場景
一切正常 就會是這個樣子的,這時候操作你的方向盤 擋桿 腳踏板 來看看都對應哪些數值吧。VS打開這個腳本 就可以找到對應的代碼了。
運行失敗的解決
紅色報錯的 / x64 / logitechlcdengineswrapper.dll 類似這樣
按照上面的方法 替換下 logitechlcdengineswrapper.dll 這個文件
沒有紅色報錯 項目可以運行 但是沒有數值 提示
PLEASE PLUG IN A STEERING WHEEL OR A FORCE FEEDBACK
CONTROLLER(請插入方向盤或力反饋控制器)
這種的 請按照一下說明一次排查。
可能是缺少一下C++基礎庫
這個建議你搜索下Aio runtimes 這是一個檢測電腦缺什么基礎庫的軟件 很無腦 不點擊 30秒后也會自己安裝。
重新啟動Unity 項目查看是否正常運行。
檢查下Logite游戲軟件是否檢測到方向盤,是否可以正常改鍵(改一個按鍵 對應鼠標的右鍵 在桌面試試 )不正常重新插拔設備,檢查驅動。
在Windows下正常 在Unity測試界面仍然顯示 請插入設備 并且拔下設備 重新插入設備 Unity的控制臺會輸出 Joystick disconnected(“G29 Driving force Racing Wheel”)
Joystick reconnected(“G29 Driving force Racing Wheel”)這種情況請參考
羅技官方交流社區 終極解決辦法
簡單翻譯一下就是 卸載Logitech游戲軟件 找到設備管理器(我的電腦右鍵屬性-設備管理器)
找到 聲音、視頻和游戲控制器 卸載這里的羅技設備驅動 拔掉設備 重啟計算機 完整安裝一次 Logitech游戲軟件 最后重新插入 羅技方向盤。
(我的5個電腦有3臺碰到了這個問題 最后靠這條官方解釋修好的。據我猜測可能是因為windows自己安裝的驅動會跟Logitech游戲軟件的驅動有沖突吧。插入設備的時候Windows會自動幫我們裝方向盤的驅動,所以我嘗試在離線狀態安裝 Logitech游戲軟件 插入方向盤 最后都好用了。也許是玄學吧。總之這個問題困擾了我2天半的時間 最后終于修好了)
接入Unity
Demo的使用方法
場景成功運行會得到 上一章圖片一樣的結果。這時候我們可以操作方向盤 腳踏板 檔桿 來查看這些輸入對應哪一個值。
下面還會告訴你 摁 s c d 方向鍵 等鍵位調整不同的效果。
到這里 能力強一點的就可以 自己閱讀源碼 來更改這些數值 然后用到自己的工程中了
這里 我僅列出一些比較重要的,震動等可以自行翻看官方文檔(SDK包里面就有)
方向盤 X-axis Position 右32767 初始0 左-32767
油門 Y-axis Position 踩死-32767 初始0 抬起 32767
制動 z-axis rotation 踩死 -32767初始0抬起 32767
離合器 extra axes positions 1 :踩死 -32767初始0抬起 32767
擋桿 button 12 -18 對應1-6擋+倒擋|
力反饋 需要在Logitech游戲軟件中 設置-G29-允許在游戲中調節力反饋
在測試中s鍵開啟
源碼中是下面這一句
參數1 是設備編號(就是第幾個設備,我們就1個方向盤所以是第一個 填0)
參數2是中心位置(Demo里是50 所以你摁下s鍵 方向盤會自己動。0就是方向盤正中間的位置)
參數3 參數4 你去翻百度也看不懂的 一個是管松緊 一個管力度(大概)
總之你可以調試幾次 找到自己滿意的值。這里33 28 是我比較滿意的手感。
這里Demo中還有好多 可以設置的 比如方向盤的震動等,有需要可以自己一個一個試,參考操作手冊。就不一一解釋了 關于這方面的博文有好多 基本都是機翻,看個人理解了
接入自己的項目
這里就非常簡單了 參考Demo的寫法
Awake()或Start()方法中初始化
Update()方法里檢測這些輸入
這里我傾向進行一次封裝 在Update里調用Input()
把檢測輸入的邏輯寫入Input()
在Input里進行 設備輸入檢測
Input(){if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0)){LogitechGSDK.DIJOYSTATE2ENGINES rec;rec = LogitechGSDK.LogiGetStateUnity(0);//TODO 這里就可以獲取 想要的方向盤數據了} }if判斷直接參考Demo寫 就是SDK的幀調用判斷設備是否接入
DIJOYSTATE2ENGINES是一個結構體 存儲輸入設備值的
這里 rec.lx 就直接得到方向盤旋轉數據了。(自己對照Demo找)
rec.ly油門 rec.lRz剎車
摁鍵
方向盤按鍵的三個方法 按下 抬起 按住 參數1 設備號 參數2 按鍵號
bool LogiButtonTriggered(int index, int buttonNbr); 按鍵檢測
bool LogiButtonIsPressed(int index, int buttonNbr); 按鍵釋放
bool LogiButtonReleased(int index, int buttonNbr); 按鍵按下
(這里建議使用 按住與抬起做檢測,因為我做項目的時候 這個按下檢測可能會觸發多次 不知道是硬件還是軟件的問題。抬起就是觸發一次 沒有問題)
問題與總結
問題
這里說結果我見到的提問
-
游戲進出 油門 離合 剎車 方向盤 初始值都是0 怎么破 必須動一下才正常。
你設計一個打火摁鍵不就好了 這樣不僅游戲更真實了,還解決了這個問題。
其實隨便摁一個鍵子都可以的。 -
有的時候調試調試 方向盤就不好使了。
羅技文檔里有寫,方向盤必須在頁面最前端才是好用的(就是那個 初始化 判斷那塊 )所以有的時候我們 切屏或者打開Unity的控制臺 就會這樣。因為這個時候Game視圖不是最前端的視圖了。 -
力反饋沒有
檢查你開沒開Logitech游戲軟件 設置 允許游戲中調節力反饋 勾選沒有(這個軟件主要管的就是力反饋這些東西,你可以嘗試 在游戲運行過程中 關掉這個軟件,方向盤一下子就軟了。。。。。) -
為什么我開車會翻啊?
總結
- 可別再Input.GetButtonDown(“Button3”)
Input.GetKeyDown(KeyCode.JoystickButton0)
這樣了好么,人家有現成的不用,又蠢又丟人。 - 這里推薦一篇我覺得寫得不錯的
https://blog.csdn.net/Sakura_Jun/article/details/87718845 - 開車插件
Realistic Car Controller
還請大家支持正版。我就不給大家提供了,網盤見去吧,有什么不明白可以問我 大家共同學習。 - 插件可能會更新 情況也許會不一樣,沒準那一天羅技修復了呢。
第一次寫 有不對的請賜教,寫得不好見諒,我會改進的。
總結
以上是生活随笔為你收集整理的Unity开发 罗技方向盘 G29 白话版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [密码学基础][每个信息安全博士生应该知
- 下一篇: vue重要特性