Unity+罗技G29方向盘+Realistic Car Controller 制作简单的模拟驾驶

工程版本及说明

Unity2018.3.10f1 所使用的插件为
Windows:Logitech 游戏软件
Unity插件:Logitech SDK V1.7,Realistic Car Controller 3.1f

工程demo说明

SampleScene 为测试罗技方向盘按钮的场景,RCC City为我主要测试的场景,但是我改的是车辆控制的核心代码其他的场景应该都可适配。
制作时参考的博客:Unity开发 罗技方向盘 G29 白话版
这次开发我没有用到换挡的功能(因为没有买换挡的硬件)所以只有方向盘和油门子

车辆控制更改的核心代码

车辆控制的核心脚本为 RCC_CarControllerV3
挂载在RCC City场景种E36的物体上
具体代码建议下载我的工程去看我只截取其中一段
有个问题就是罗技的接口给的按钮按下无法判断是长按还是短按很难受所以我自己加了个时间控制的如果有解决了的大佬可以交流一哈

#region
                //检测罗技方向盘是否开启
                if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0))
                {
    
    
                    //Debug.Log(1);
                    //TODO:获取罗技方向盘数据对象
                    LogitechGSDK.DIJOYSTATE2ENGINES rec;
                    rec = LogitechGSDK.LogiGetStateUnity(0);
                    //TODO:判断按钮逻辑
                    btnPressedTime += Time.deltaTime;
                    if (btnPressedTime >= 0.5f)
                    {
    
    
                        btnPressedTime = 0;
                        for (int i = 0; i < 128; i++)
                        {
    
    
                            if (rec.rgbButtons[i] == 128)
                            {
    
    
                                //TODO:切换倒车前进按钮
                                if (i == 24)
                                {
    
    
                                    IsBackTheCar = !IsBackTheCar;
                                    break;
                                }
                                //TODO:切换摄像头
                                if (i == 1)
                                {
    
    
                                    if (GameObject.FindObjectOfType<RCC_Camera>())
                                        GameObject.FindObjectOfType<RCC_Camera>().ChangeCamera();
                                    break;
                                }
                                //TODO:慢镜头
                                if (i == 23)
                                {
    
    
                                    if (Time.timeScale != .2f)
                                        Time.timeScale = .2f;
                                    else
                                        Time.timeScale = 1f;

                                    break;
                                }
                                //TODO:右转灯
                                if (i == 6)
                                {
    
    
                                    if(indicatorsOn != RCC_CarControllerV3.IndicatorsOn.Right)
                                    {
    
    
                                        indicatorsOn = RCC_CarControllerV3.IndicatorsOn.Right;
                                    }
                                    else
                                    {
    
    
                                        indicatorsOn = RCC_CarControllerV3.IndicatorsOn.Off;
                                    }

                                    break;
                                }
                                //TODO:左转灯
                                if (i == 7)
                                {
    
    
                                    if (indicatorsOn != RCC_CarControllerV3.IndicatorsOn.Left)
                                    {
    
    
                                        indicatorsOn = RCC_CarControllerV3.IndicatorsOn.Left;
                                    }
                                    else
                                    {
    
    
                                        indicatorsOn = RCC_CarControllerV3.IndicatorsOn.Off;
                                    }

                                    break;
                                }
                                //TODO:头灯
                                if (i == 8)
                                {
    
    
                                    if (!highBeamHeadLightsOn && lowBeamHeadLightsOn)
                                    {
    
    
                                        highBeamHeadLightsOn = true;
                                        lowBeamHeadLightsOn = true;
                                        break;
                                    }
                                    if (!lowBeamHeadLightsOn)
                                        lowBeamHeadLightsOn = true;
                                    if (highBeamHeadLightsOn)
                                    {
    
    
                                        lowBeamHeadLightsOn = false;
                                        highBeamHeadLightsOn = false;
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    //TODO:判断是否为倒车形态
                    if (!IsBackTheCar)
                    {
    
    
                        //TODO:设置油门控制车辆的速度
                        gasInput = Mathf.InverseLerp(-32768, 32767, -rec.lY);
                        brakeInput = 0;
                    }
                    else
                    {
    
    
                        gasInput = 0;
                        brakeInput = Mathf.InverseLerp(-32768, 32767, -rec.lY);
                    }

                    //Debug.Log(gasInput);
                    //steerInput = Mathf.InverseLerp(-32768, 32767, -rec.lX);
                    //TODO:设置方向盘控制车的转向
                    steerInput = rec.lX / 32768f;
                    //Debug.Log(steerInput);
                    //TODO:设置刹车
                    handbrakeInput = Mathf.InverseLerp(-32768, 32767, -rec.lRz);
                    
                    //Debug.Log(brakeInput);
                }
                #endregion

Demo使用说明

需要一个Unity2018.3.10f1 引擎
一个罗技G29方向盘 (不送方向盘自己上马云买)
如果你没有方向盘就自己拿汽车的插件研究吧

工程地址

百度盘:
Unity+罗技G29方向盘+Realistic Car Controller 制作简单的模拟驾驶
提取码:4118
CSDN:
Unity+罗技G29方向盘+Realistic Car Controller 制作简单的模拟驾驶
CarTest01压缩包为demo工程
LogitechSteeringWheelSDK_8.75.30 为罗技游戏软件 你如果官网打不开就用我的下吧最好去官网下
Realistic Car Controller 3.1f 为制作汽车控制的插件没方向盘的可以只下这个
Logitech SDK V1.7这个插件自己去UnityAssetStore下载
注:如果你要配置方向盘先安装罗技游戏软件再把方向盘插入电脑 不然进unity识别不了 好像是驱动没安好如果遇到其他问题请参考上方的白话G29博客

新媒体互动行业交流群推广

QQ群号:139077032
这个群为csdn爱思考的猴子大佬建的,我当初刚入行时经常看这位大佬的博客。大家同行有兴趣的话可以进群交流分享
后面有空的话会更新之前做过的一些功能的

猜你喜欢

转载自blog.csdn.net/qq_42685027/article/details/108527278
car