Unity(二十一) 關於Logitech羅技G29開發

羅技UnitySDK:

鏈接:https://pan.baidu.com/s/12eGEipe4kiZjWfZTFmQvSg 
提取碼:sk01

說明:這份SDK可以獲取羅技方向盤以及手排擋的所有數據,在Unity2018版本下測試是沒問題的,只需安裝羅技PC軟件即可

 

 

封裝工具類:

下面的摘自某大神的內容,寫的很詳細了,好的資源大家共享

using System;
using System.Collections;
using UnityEngine;



namespace Sakura
{
    /// <summary>
    /// Logitech輸入設備
    /// </summary>
    public enum LogitechSteeringWheelButtonType
    {
        /// <summary>
        /// 方向盤 X 鍵(按鈕1)
        /// </summary>
        x,

        /// <summary>
        /// 方向盤 □ 鍵(按鈕2)
        /// </summary>
        rect,

        /// <summary>
        /// 方向盤 ○ 鍵(按鈕3)
        /// </summary>
        circle,

        /// <summary>
        /// 方向盤 △ 鍵(按鈕4)
        /// </summary>
        triangle,

        /// <summary>
        /// 方向盤 右撥片 鍵(按鈕5)
        /// </summary>
        rightDialSlice,

        /// <summary>
        /// 方向盤 左撥片 鍵(按鈕6)
        /// </summary>
        leftDialSlice,

        /// <summary>
        /// 方向盤 R2 鍵(按鈕7)
        /// </summary>
        R2,

        /// <summary>
        /// 方向盤 L2 鍵(按鈕8)
        /// </summary>
        L2,

        /// <summary>
        /// 方向盤 SHARE 鍵(按鈕9)
        /// </summary>
        share,

        /// <summary>
        /// 方向盤 OPTION 鍵(按鈕10)
        /// </summary>
        option,

        /// <summary>
        /// 方向盤 R3 鍵(按鈕11)
        /// </summary>
        R3,

        /// <summary>
        /// 方向盤 L3 鍵(按鈕12)
        /// </summary>
        L3,

        /// <summary>
        /// 方向盤 + 鍵(按鈕20)
        /// </summary>
        plus,

        /// <summary>
        /// 方向盤 - 鍵(按鈕21)
        /// </summary>
        subtract,

        /// <summary>
        /// 方向盤 回車 鍵(按鈕24)
        /// </summary>
        enter,

        /// <summary>
        ///  方向盤 logo 鍵(按鈕25)
        /// </summary>
        logoBtn

    }


    public enum CursorType
    {
        /// <summary>
        ///  Up 
        ///  rec.rgdwPOV[0] = 0
        /// </summary>
        up,

        /// <summary>
        ///  UP-RIGHT
        ///  rec.rgdwPOV[0] = 4500
        /// </summary>
        up_right,

        /// <summary>
        ///  right
        ///  rec.rgdwPOV[0] = 9000
        /// </summary>
        right,

        /// <summary>
        ///  DOWN-RIGHT
        ///  rec.rgdwPOV[0] = 13500
        /// </summary>
        down_right,

        /// <summary>
        ///  down
        ///  rec.rgdwPOV[0] = 18000
        /// </summary>
        down,

        /// <summary>
        ///  DOWN-LEFT
        ///  rec.rgdwPOV[0] = 22500
        /// </summary>
        down_left,

        /// <summary>
        ///  left
        ///  rec.rgdwPOV[0] = 27000
        /// </summary>
        left,

        /// <summary>
        ///  UP-LEFT
        ///  rec.rgdwPOV[0] = 31500
        /// </summary>
        up_left
    }


    public class LogitechController : MonoBehaviour
    {

        public static LogitechController Instance;

        private LogitechGSDK.DIJOYSTATE2ENGINES rec;


        /// <summary>
        /// 方向盤 
        /// </summary>
        public class SteeringWheel
        {
            /// <summary>
            /// 剛點擊按鈕時觸發一次
            /// LogitechWheelButtonType:按鈕類型
            /// </summary>
            public Action<LogitechSteeringWheelButtonType> OnTriggered;
            /// <summary>
            /// 維持點擊按鈕時一直觸發
            /// LogitechWheelButtonType:按鈕類型
            /// </summary>
            public Action<LogitechSteeringWheelButtonType> OnPressed;
            /// <summary>
            /// 鬆開按鈕時觸發一次
            /// LogitechWheelButtonType:按鈕類型
            /// </summary>
            public Action<LogitechSteeringWheelButtonType> OnReleased;

            /// <summary>
            /// 點擊按鈕時觸發一次,按住按鈕一直觸發
            /// CursorType:方向類型
            /// </summary>
            public Action<CursorType> OnCursor;

            /// <summary>
            /// 每旋轉一檔旋鈕時觸發一次
            /// bool:返回true,順時針旋轉;返回flase,逆時針旋轉
            /// </summary>
            public Action<bool> OnKnob;

            /// <summary>
            /// 轉動方向盤觸發
            /// float:不觸碰方向盤,值一直爲0,觸碰後左扭到盡:-32768,右扭到盡爲32767
            /// </summary>
            public Action<float> OnSteeringWheel;

            
        }

        /// <summary>
        /// 腳踏板
        /// </summary>
        public class Pedals
        {           
            /// <summary>
            /// 離合
            /// float:不觸碰腳踏板,值一直爲0,觸碰後踩盡:-32768,鬆開爲32767
            /// </summary>
            public Action<float> Clutch;
            /// <summary>
            /// 剎車
            /// float:不觸碰腳踏板,值一直爲0,觸碰後踩盡:-32768,鬆開爲32767
            /// </summary>
            public Action<float> Brake;
            /// <summary>
            /// 油門
            /// float:不觸碰腳踏板,值一直爲0,觸碰後踩盡:-32768,鬆開爲32767
            /// </summary>
            public Action<float> Throttle;
        }

        /// <summary>
        /// 檔位器
        /// </summary>
        public class GearShifter
        {
            /// <summary>
            /// 剛進入新檔位時觸發一次
            /// int:檔位數(0:R檔,1:1檔,2:2檔,以此類推)
            /// </summary>
            public Action<int> OnTriggered;
            /// <summary>
            /// 維持檔位時一直觸發
            /// int:檔位數(0:R檔,1:1檔,2:2檔,以此類推)
            /// </summary>
            public Action<int> OnPressed;
            /// <summary>
            /// 離開檔位時觸發一次
            /// int:檔位數(0:R檔,1:1檔,2:2檔,以此類推)
            /// </summary>
            public Action<int> OnReleased;

        }
        public GearShifter gearShifter;
        public Pedals pedals;
        public SteeringWheel steeringWheel;

        private void Awake()
        {
            if (Instance == null)
                Instance = this;

            gearShifter = new GearShifter();
            pedals = new Pedals();
            steeringWheel = new SteeringWheel();


            bool x = false;
           // while (x == false)
            {
                x = LogitechGSDK.LogiSteeringInitialize(false);
                Debug.Log(string.Format("<color=#ff0000ff>LogitechSteeringInit:</color> <color=#008000ff>{0}</color>", x));
            }
            
        }
       

        private void Update()
        {

            if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0))
            {
                #region 檔位器

                //擋位 1 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 12))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(1);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 12))
                {
                    // if (gearShifter.OnPressed != null) gearShifter.OnPressed(1);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 12))
                {
                    //if (gearShifter.OnReleased != null) gearShifter.OnReleased(1);
                }

                //擋位 2 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 13))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(2);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 13))
                {
                    // if (gearShifter.OnPressed != null) gearShifter.OnPressed(2);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 13))
                {
                    // if (gearShifter.OnReleased != null) gearShifter.OnReleased(2);
                }

                //擋位 3 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 14))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(3);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 14))
                {
                    //if (gearShifter.OnPressed != null) gearShifter.OnPressed(3);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 14))
                {
                    //if (gearShifter.OnReleased != null) gearShifter.OnReleased(3);
                }

                //擋位 4 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 15))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(4);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 15))
                {
                    // if (gearShifter.OnPressed != null) gearShifter.OnPressed(4);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 15))
                {
                    //if (gearShifter.OnReleased != null) gearShifter.OnReleased(4);
                }

                //擋位 5 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 16))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(5);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 16))
                {
                    // if (gearShifter.OnPressed != null) gearShifter.OnPressed(5);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 16))
                {
                    // if (gearShifter.OnReleased != null) gearShifter.OnReleased(5);
                }

                //擋位 6 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 17))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(6);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 17))
                {
                    // if (gearShifter.OnPressed != null) gearShifter.OnPressed(6);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 17))
                {
                    // if (gearShifter.OnReleased != null) gearShifter.OnReleased(6);
                }

                //擋位 R 擋
                if (LogitechGSDK.LogiButtonTriggered(0, 18))
                {
                    if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(0);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 18))
                {
                    //if (gearShifter.OnPressed != null) gearShifter.OnPressed(0);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 18))
                {
                    // if (gearShifter.OnReleased != null) gearShifter.OnReleased(0);
                }
                //N檔            
                {
                    if (LogitechGSDK.LogiButtonReleased(0, 12)
                   || LogitechGSDK.LogiButtonReleased(0, 13)
                    || LogitechGSDK.LogiButtonReleased(0, 14)
                     || LogitechGSDK.LogiButtonReleased(0, 15)
                      || LogitechGSDK.LogiButtonReleased(0, 16)
                       || LogitechGSDK.LogiButtonReleased(0, 17)
                        || LogitechGSDK.LogiButtonReleased(0, 18))
                    {
                        if (gearShifter.OnTriggered != null) gearShifter.OnTriggered(9);
                    }
                }


                #endregion

                #region 腳踏板

                rec = LogitechGSDK.LogiGetStateUnity(0);
                             
                //離合
                if (pedals.Clutch != null) pedals.Clutch(rec.rglSlider[0]);
                //剎車
                if (pedals.Brake != null) pedals.Brake(rec.lRz);
                //油門
                if (pedals.Throttle != null) pedals.Throttle(rec.lY);
                

                #endregion

                #region 方向盤
                rec = LogitechGSDK.LogiGetStateUnity(0);
                if (steeringWheel.OnSteeringWheel != null) steeringWheel.OnSteeringWheel(rec.lX);

                //方向盤 X 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 0))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.x);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 0))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.x);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 0))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.x);
                }
                //方向盤 □ 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 1))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.rect);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 1))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.rect);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 1))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.rect);
                }
                //方向盤 ○ 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 2))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.circle);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 2))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.circle);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 2))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.circle);
                }
                //方向盤 △ 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 3))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.triangle);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 3))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.triangle);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 3))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.triangle);
                }
                //方向盤 右撥片 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 4))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.rightDialSlice);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 4))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.rightDialSlice);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 4))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.rightDialSlice);
                }
                //方向盤 左撥片 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 5))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.leftDialSlice);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 5))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.leftDialSlice);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 5))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.leftDialSlice);
                }
                //方向盤 R2 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 6))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.R2);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 6))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.R2);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 6))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.R2);
                }
                //方向盤 L2 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 7))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.L2);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 7))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.L2);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 7))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.L2);
                }
                //方向盤 SHARE 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 8))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.share);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 8))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.share);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 8))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.share);
                }
                //方向盤 OPTION 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 9))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.option);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 9))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.option);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 9))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.option);
                }
                //方向盤 R3 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 10))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.R3);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 10))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.R3);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 10))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.R3);
                }
                //方向盤 L3 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 11))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.L3);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 11))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.L3);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 11))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.L3);
                }
                //方向盤 + 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 19))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.plus);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 19))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.plus);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 19))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.plus);
                }
                //方向盤 - 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 20))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.subtract);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 20))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.subtract);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 20))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.subtract);
                }
                //方向盤 回車 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 23))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.enter);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 23))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.enter);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 23))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.enter);
                }
                //方向盤 logo 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 24))
                {
                    if (steeringWheel.OnTriggered != null) steeringWheel.OnTriggered(LogitechSteeringWheelButtonType.logoBtn);
                }
                else if (LogitechGSDK.LogiButtonIsPressed(0, 24))
                {
                    if (steeringWheel.OnPressed != null) steeringWheel.OnPressed(LogitechSteeringWheelButtonType.logoBtn);
                }
                else if (LogitechGSDK.LogiButtonReleased(0, 24))
                {
                    if (steeringWheel.OnReleased != null) steeringWheel.OnReleased(LogitechSteeringWheelButtonType.logoBtn);
                }
                //方向盤 紅色滾輪右滾 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 21))
                {
                    if (steeringWheel.OnKnob != null) steeringWheel.OnKnob(true);
                }
                //方向盤 紅色滾輪左滾 鍵
                if (LogitechGSDK.LogiButtonTriggered(0, 22))
                {
                    if (steeringWheel.OnKnob != null) steeringWheel.OnKnob(false);
                }

                switch (rec.rgdwPOV[0])
                {
                    case (0):      //Up
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.up);
                        break;
                    case (4500):   // UP-RIGHT
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.up_left);
                        break;
                    case (9000):   //right
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.right);
                        break;
                    case (13500):  //DOWN-RIGHT
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.down_right);
                        break;
                    case (18000):  //down
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.down);
                        break;
                    case (22500):  //DOWN-LEFT
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.down_left);
                        break;
                    case (27000):  //left
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.left);
                        break;
                    case (31500):  //UP-LEFT
                        if (steeringWheel.OnCursor != null) steeringWheel.OnCursor(CursorType.up_left);
                        break;
                }

                #endregion

            }


        }
    

        private void OnDestroy()
        {
            
            LogitechGSDK.LogiSteeringShutdown();

            //如果這裏報錯,需要在LogitechGSDK裏添加
            /*
              [DllImport("LogitechSteeringWheelEnginesWrapper", CharSet =CharSet.Unicode,                         
              CallingConvention = CallingConvention.Cdecl)]
              public static extern bool LogiSteeringShutdown();
            */

        }
    }


}

測試腳本:

public class LogitechDriving :MonoBehavior
{
 public Sakura.LogitechController.GearShifter gearShifter;
    public Sakura.LogitechController.Pedals pedals;
    public Sakura.LogitechController.SteeringWheel steeringWheel;


 void Start()
    {
        //接收羅技按鍵
        LogitechKeyEvent();

    }

 void LogitechKeyEvent()
    {
        gearShifter =  Sakura.LogitechController.Instance.gearShifter;
        pedals = Sakura.LogitechController.Instance.pedals;
        steeringWheel = Sakura.LogitechController.Instance.steeringWheel;

        if (gearShifter==null || pedals==null || steeringWheel==null) return;

        #region Events
        gearShifter.OnTriggered += (index) =>
        {
                        
            //Debug.Log(index + " OnTriggered");
        };
        //gearShifter.OnPressed += (index) =>{};
        //gearShifter.OnReleased += (index) =>{};


        pedals.Clutch += (xx) =>{ Logitech_Clutch = xx; };
        pedals.Brake += (xx) => { Logitech_Brake = xx; };
        pedals.Throttle +=(xx)=>{Logitech_Gas = xx; };


        steeringWheel.OnTriggered += (index) =>
        {
            //Debug.Log(index + " OnTriggered");
        };
        //steeringWheel.OnPressed += (index) =>{};
        //steeringWheel.OnReleased += (index) =>{};

        steeringWheel.OnCursor += (inx) =>
        {
            //Debug.Log(inx + "OnReleased "); 
        };

        steeringWheel.OnKnob += (inx) =>
        {
            //Debug.Log(inx + "OnReleased "); 
        };//旋鈕

        steeringWheel.OnSteeringWheel += (inx) =>
        {
           
           
        };
        #endregion
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章