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

article/2025/1/2 4:11:51

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(请插入方向盘或力反馈控制器)
这种的 请按照一下说明一次排查。

  1. 可能是缺少一下C++基础库
    这个建议你搜索下Aio runtimes 这是一个检测电脑缺什么基础库的软件 很无脑 不点击 30秒后也会自己安装。
    重新启动Unity 项目查看是否正常运行。

  2. 检查下Logite游戏软件是否检测到方向盘,是否可以正常改键(改一个按键 对应鼠标的右键 在桌面试试 )不正常重新插拔设备,检查驱动。

  3. 在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游戏软件 设置 允许游戏中调节力反馈 勾选没有(这个软件主要管的就是力反馈这些东西,你可以尝试 在游戏运行过程中 关掉这个软件,方向盘一下子就软了。。。。。)

  • 为什么我开车会翻啊?

  1. 你wheelCollider这块没玩好。很多数值需要调试
  2. 你做的太真实了,现实中你这么开业翻车了

总结

  • 可别再Input.GetButtonDown(“Button3”)
    Input.GetKeyDown(KeyCode.JoystickButton0)
    这样了好么,人家有现成的不用,又蠢又丢人。
  • 这里推荐一篇我觉得写得不错的
    https://blog.csdn.net/Sakura_Jun/article/details/87718845
  • 开车插件
    Realistic Car Controller
    还请大家支持正版。我就不给大家提供了,网盘见去吧,有什么不明白可以问我 大家共同学习。
  • 插件可能会更新 情况也许会不一样,没准那一天罗技修复了呢。

第一次写 有不对的请赐教,写得不好见谅,我会改进的。


http://chatgpt.dhexx.cn/article/KEBxhhFb.shtml

相关文章

如何解决version `GLIBCXX_3.4.29‘ not found的问题

首先,运行时出现的问题如下: ImportError: /lib/x86_64-linux-gnu/libstdc.so.6: version GLIBCXX_3.4.29 not found (required by /home/wuye/anaconda3/envs/tf2/lib/python3.8/site-packages/google/protobuf/pyext/_message.cpython-38-x86_64-linu…

Ubuntu环境下读取罗技G29方向盘信息

Ubuntu环境下读取罗技G29方向盘信息 引言 实验室有这么酷的驾驶设备,来了一年还没有实际操作过,早就蠢蠢欲试了,哈哈哈不过之前负责的师兄还在就一直没敢用,现在他毕业了就可以为所欲为了 之前师兄好像都是在Windows下开发的&…

UDS 安全认证29服务概述

一.服务概述 此服务的目的是为客户提供一种证明其身份的方法,允许其访问数据和/或诊断服务,这些数据和/或诊断服务由于安全、排放或安全等原因而受到限制。 用于将例程或数据下载/上传到服务器以及从服务器读取特定内存位置的诊断服务可能需…

SQLi LABS Less-29

第29关使用GET请求提交参数,在url中构造payload即可 源码中并没有做什么过滤,直接测试注入点即可 在url中输入 1and true-- a,源码中的SQL会拼接成下面这样 注释后面的内容不起作用,所以真正执行的SQL是这样的 and后面的true会使SQL恒成立,SQL正常查询出用户内容,并在页面显示…

AE 提示29:0

报错信息说明: After Effects error警告:内部验证失败。该project工程项目的内部秩序混乱。 报错的可能原因: 当在Project项目窗口中替换素材,或重命名素材时,有些引用的数据被破坏了。建议解决方法: 将工程…

UN ECE WP.29 R155 R156 概述

目录 1. 什么是UNECE WP.29 2. WP.29合规认证要求 3. WP.29和ISO/SAE 21434之间的关系 4. WP.29 R155 - Cybersecurity 5. WP.29 R156 - Software Update 1. 什么是UNECE WP.29 UNECE: The United Nations Economic Commision for Europe , 联合国欧洲经济委员会。创建于1…

认识UDS诊断29认证服务-Authentication Service

目录 1.概述 2. 背景知识 3. 服务介绍 4. 服务实现 5. 与27服务的比较 1.概述 29服务是在ISO 14229-2020版本中首次增加的为应对网联汽车日益增加的安全风险的新服务。 此服务的目的顾名思义是为client和server之间的身份认证提供一种方法,以便对意图获取一些…

UDS 29服务

目录 一、29服务支持安全概念 二、基于APCE的认证(KPI) 三、基于ACR认证 一、29服务支持安全概念 1、APCE:采用非对称加密的基于PKI证书交换程序的认证 2、ACR:采用对称或非对称加密的基于挑战确认流程的认证 子功能介绍&am…

常用三种正态检验方法

带正态曲线直方图 利用SPSS的菜单分析环境:“分析”-“描述统计”-“频率”,在绘图选项选择带正态曲线的直方图。 绘制带正态曲线的直方图通过对比直方图与正态曲线的拟合程度,判定数据序列的分布形态是否接近正态分布。下面两幅图是某班级…

Origin_正态检验以及频率统计

文章目录 正态检验1、导入数据2、进行正态检验 频率统计1、选中数据2、执行频率统计 正态检验 1、导入数据 将该列填充以100为中心的随机整数 2、进行正态检验 突出显示A列,然后单击“Statistics: Descriptive Statistics: Normality Test”以打开对话框。所选…

past软件_Past软件与AndersonDarling正态性检验

如欲转载本文,请先与作者联系并获得授权。 本文由正在制作中的新教程修改而来。 目录 1 Past软件下载 2 A-D检验简介 3 操作 4 参考文献 1 Past软件下载 读者可在本公众号(邱宗满)内通过下方菜单“资料课程→软件下载→数据分析软件”下载该软件,也可以在Past软件官网进行下载…

正态性检验ks和sw区别_t检验常见问题汇总解答,你想知道的都在这里

在分析过程中,无论是由于数据质量还是统计方法选择上,甚至是自己也讲不清的什么原因都可能导致数据无法正常分析。这种细节的问题,文献里一般又不会详细说明,而实际分析时遇见一次就非常头疼。 因此,SPSSAU汇总了一些常用方法中出现频率较高的问题,整理成文章,大家可以…

基于spss的正态分布正态性检验

****基于spss的正态分布正态性检验**** 正态分布正态性检验频率直方图实验步骤 P-P图实验步骤 Q-Q图实验步骤 K-S 检验实验步骤 描述法(偏度和峰度系数检验)实验步骤 简要介绍这五种方法, 有需要数据练习的练习我 正态分布 正态分布(Normal distribution…

python正态检验_python验证正态分布

验证正态分布 为什么要检验数据的正态性? 很多时候,我们都需要使用从单一样本中获取的样本信息利用统计推断的方法来估计总体的参数信息,这是一种非常有用的统计方法,但在执行相关推断之前,我们需要验证一些假定&…

matlab 数据正态性检验

matlab 数据正态性检验 matlab 数据正态性检验 数据说明描述性图像 指数走势图收益率散点图收益率频率分布直方图Q-Q 图峰度与偏度系数 峰度偏度jb 检验代码下载数据说明 以前推荐用tushare是因为tushare免费,但是现在tushare非常无耻,积分不透明变像收费早已背离初心,建议…

非参数正态性检验

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自:机器学习算法那些事 非参数正态性检验 前面两节介绍了采用Q-Q图和偏度与峰度来对采集样本进行正态性检验,本节介绍非参数性的正态性检验…

R语言数据统计1——正态性检验

引用 正态性检验之qqplot和ppplot原理及R语言实现 QQ图 KS检验和SW检验的区别 t检验算法及其在R语言中的实现 R语言做正态分布检验 R语言与统计分析 数据统计中的方差分析第一步应该是检查数据,其次做正态性检验。 而正态性检验: KS检验&#xff08…

正态分布方差检验

卡方检验、F检验 定义 χ 2 \chi^2 χ2 检验123实验设计 F F F 检验123 附录假设检验一般步骤势函数 定义 用于检验总体呈正态分布的方差的假设检验,其中 χ 2 \chi^2 χ2 检验常用于单样本正态方差检验; F F F 检验用于双样本的正态方差检验。 χ 2 \…

统计推断——正态性检验(图形方法、偏度和峰度、统计(拟合优度)检验)

正态分布是很多计量数据比较分析的假设前提,因此在做比较分析之前要首先验证样本数据所代表的总体是否服从正态分布。当然对于比率数据的比较也需要满足分布前提,通常是二项分布和泊松分布,对于二项分布的比率比较,一般不需要做分…

统计学之正态分布检验

统计学之正态分布检验 本次主要是对数据集数据进行正态分布检验,数据集地址为:http://jse.amstat.org/datasets/normtemp.dat.txt 主要包括三列数据,体温(F)、性别(1:男,2&#xff…