首页 > 技术文章 > 罗技方向盘接入Unity_LogitechSteeringWheelEnginesWrapper

kao-la-bao-bei 2020-06-02 15:35 原文

基于Unity版本 2018.4.11f1(点击下载

设置脚踏板

脚踏板的设置需要在Unity中添加虚拟轴,添加几个轴就把图中的“Size”改为 18 加上要添加的轴的数量。

离合

刹车

 

油门

 

Name:名字

Dead:设置为0,不然得到的数字不是 Sensitivity 设置的数值

Sensitivity:建议设置成0.5(该值为0.5时,若游戏开始运行,没有触碰过脚踏板,那么该数值为0;当触碰了一次离合踏板时(触碰任何一个脚踏板后,三个脚踏板都会出现非 0 的数值),离合板完全抬起的时候数值为0.5,完全踩下时数值为-0.5)

Type:按图中所示选择

Axis:按图中所示选择

设置方向盘

十字按键

 其他按键

将该DLL与C#脚本导入Unity中(点击下载DLL与脚本

然后将下方脚本创建在Uniry中,并挂载到相机(建议)或其他物体上,然后运行测试

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FunctionOne : MonoBehaviour {

    void Start () {
        // 没有这行代码,用方法二可能获取不到按键
        LogitechGSDK.LogiSteeringInitialize(false);
    }

    void Update () {
        // 获取方向盘
        if (Input.GetAxis ("Horizontal") != 0) {
            print (Input.GetAxis ("Horizontal"));
        }

        // 获取“脚踏板”
        if (Input.GetAxisRaw("Throttle") < 0.5f) {
            print ("油门 的值为:" + Input.GetAxisRaw("Throttle"));
        }
        if (Input.GetAxisRaw("Brake") < 0.5f) {
            print ("刹车 的值为:" + Input.GetAxisRaw("Brake"));
        }
        if (Input.GetAxisRaw("Clutch") < 0.5f) {
            print ("离合 的值为:" + Input.GetAxisRaw("Clutch"));
        }

        // 获取方向盘上的“十字按键”
        if (Input.GetAxisRaw("DPadX") == 0.5) {
            print ("按下了十字按键  右");
        }
        if (Input.GetAxisRaw("DPadX") == -0.5) {
            print ("按下了十字按键  左");
        }
        if (Input.GetAxisRaw("DPadY") == 0.5) {
            print ("按下了十字按键  上");
        }
        if (Input.GetAxisRaw("DPadY") == -0.5) {
            print ("按下了十字按键  下");
        }

        //方向盘所有按键获取:
        //方法一:
        //该方法在unity中只能获取0-19的键位  20-24键位需要使用方法二获取 或者全部使用方法二 

        if (Input.GetKeyDown(KeyCode.Joystick1Button0))
        {
            Debug.Log("KeyCode.Joystick1Button0  方向盘 X 键");
        }

        print (LogitechGSDK.LogiUpdate());
        //方法二:
        if (true)

        {
            LogitechGSDK.DIJOYSTATE2ENGINES wheel;
            wheel = LogitechGSDK.LogiGetStateCSharp(0);

            for (int i = 0; i < 128; i++)

            {
                if (wheel.rgbButtons[i] == 128)

                {

                    switch (i)

                    {

                    case 0:

                        Debug.Log("KeyCode.Joystick1Button0  方向盘 X 键" + i);

                        break;

                    case 1:

                        Debug.Log("KeyCode.Joystick1Button1  方向盘 □ 键" + i);

                        break;

                    case 2:

                        Debug.Log("KeyCode.Joystick1Button2  方向盘 ○ 键" + i);

                        break;

                    case 3:

                        Debug.Log("KeyCode.Joystick1Button3  方向盘 △ 键" + i);

                        break;

                    case 4:

                        Debug.Log("KeyCode.Joystick1Button4  方向盘 右拨片 键" + i);

                        break;

                    case 5:

                        Debug.Log("KeyCode.Joystick1Button5  方向盘 左拨片 键" + i);

                        break;

                    case 6:

                        Debug.Log("KeyCode.Joystick1Button6  方向盘 R2 键" + i);

                        break;

                    case 7:

                        Debug.Log("KeyCode.Joystick1Button7  方向盘 L2 键" + i);

                        break;

                    case 8:

                        Debug.Log("KeyCode.Joystick1Button8  方向盘 SHARE 键" + i);

                        break;

                    case 9:

                        Debug.Log("KeyCode.Joystick1Button9  方向盘 OPTION 键" + i);

                        break;

                    case 10:

                        Debug.Log("KeyCode.Joystick1Butto10  方向盘 R3 键" + i);

                        break;

                    case 11:

                        Debug.Log("KeyCode.Joystick1Button11  方向盘 L3 键" + i);

                        break;

                    case 12:

                        Debug.Log("KeyCode.Joystick1Button12  挡位 1 挡" + i);

                        break;

                    case 13:

                        Debug.Log("KeyCode.Joystick1Button13  挡位 2 挡" + i);

                        break;

                    case 14:

                        Debug.Log("KeyCode.Joystick1Button14  挡位 3 挡" + i);

                        break;

                    case 15:

                        Debug.Log("KeyCode.Joystick1Button15  挡位 4 挡" + i);

                        break;

                    case 16:

                        Debug.Log("KeyCode.Joystick1Button16  挡位 5 挡" + i);

                        break;

                    case 17:

                        Debug.Log("KeyCode.Joystick1Button17  挡位 6 挡" + i);

                        break;

                    case 18:

                        Debug.Log("KeyCode.Joystick1Button18  挡位 R 挡(倒挡)" + i);

                        break;

                    case 19:

                        Debug.Log("KeyCode.Joystick1Button19  方向盘 + 键" + i);

                        break;

                    case 20:

                        Debug.Log("KeyCode.Joystick1Button20  方向盘 - 键" + i);

                        break;

                    case 21:

                        Debug.Log("KeyCode.Joystick1Button21  方向盘 红色滚轮右滚 键" + i);

                        break;

                    case 22:

                        Debug.Log("KeyCode.Joystick1Button22  方向盘 红色滚轮左滚 键" + i);

                        break;

                    case 23:

                        Debug.Log("KeyCode.Joystick1Button23  方向盘 回车 键" + i);

                        break;

                    case 24:

                        Debug.Log("KeyCode.Joystick1Button24  方向盘 特殊标志键 键" + i);

                        break;
                    }
                }
            }
        }
    }
}

附一张罗技方向盘的按键说明,logitech游戏软件(点击下载

 

推荐阅读