日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity开发 罗技方向盘 G29 白话版

發布時間:2023/12/10 编程问答 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 是我比較滿意的手感。

    LogitechGSDK.LogiPlaySpringForce(0, 0, 33, 28);

    這里Demo中還有好多 可以設置的 比如方向盤的震動等,有需要可以自己一個一個試,參考操作手冊。就不一一解釋了 關于這方面的博文有好多 基本都是機翻,看個人理解了

    接入自己的項目

    這里就非常簡單了 參考Demo的寫法
    Awake()或Start()方法中初始化

    LogitechGSDK.LogiSteeringInitialize(false)

    Update()方法里檢測這些輸入
    這里我傾向進行一次封裝 在Update里調用Input()
    把檢測輸入的邏輯寫入Input()

    Update() {//一些其他需要幀調用的方法//TODOInput()//進行封裝 更加工整 更易修改 }

    在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游戲軟件 設置 允許游戲中調節力反饋 勾選沒有(這個軟件主要管的就是力反饋這些東西,你可以嘗試 在游戲運行過程中 關掉這個軟件,方向盤一下子就軟了。。。。。)

    • 為什么我開車會翻啊?

  • 你wheelCollider這塊沒玩好。很多數值需要調試
  • 你做的太真實了,現實中你這么開業翻車了
  • 總結

    • 可別再Input.GetButtonDown(“Button3”)
      Input.GetKeyDown(KeyCode.JoystickButton0)
      這樣了好么,人家有現成的不用,又蠢又丟人。
    • 這里推薦一篇我覺得寫得不錯的
      https://blog.csdn.net/Sakura_Jun/article/details/87718845
    • 開車插件
      Realistic Car Controller
      還請大家支持正版。我就不給大家提供了,網盤見去吧,有什么不明白可以問我 大家共同學習。
    • 插件可能會更新 情況也許會不一樣,沒準那一天羅技修復了呢。

    第一次寫 有不對的請賜教,寫得不好見諒,我會改進的。

    總結

    以上是生活随笔為你收集整理的Unity开发 罗技方向盘 G29 白话版的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。