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
    还请大家支持正版。我就不给大家提供了,网盘见去吧,有什么不明白可以问我 大家共同学习。
  • 插件可能会更新 情况也许会不一样,没准那一天罗技修复了呢。

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

Unity开发 罗技方向盘 G29 白话版相关推荐

  1. unity开发罗技仿真驾驶环境

    unity连接罗技的准备工作 1.到罗技官网下载SDK 点击此处下载 此软件包旨在驱动游戏并启用 快速轻松地完成读取输入数据.进行力反馈和获取/设置轮属性的完整实现. 2.到unity中的Assets ...

  2. 用Unity开发一款2D横版游戏demo

    # LanW Game Project 目录 (一) 介绍 (二) 安装教程 (三) 开发流程 1.  新建工程 2.  设置人物 3.  控制主角的移动 4.   添加切换动作的动画 5.   镜头 ...

  3. Unity3D和罗技方向盘使用方法链接总结

    链接总结 Unity3D 罗技G29开发笔记:https://blog.csdn.net/Sakura_Jun/article/details/87718845 Unity开发 罗技方向盘 G29 白 ...

  4. Unity接入罗技G29方向盘,通过SDK获取按键信息

    Unity接入罗技G29方向盘,通过SDK获取按键信息 说明:   最近需要做一个外设汽车驾驶相关的软件,采用的外设 罗技G29方向盘,项目中遇到的问题这里记录一下. 项目准备:   1.下载罗技的S ...

  5. 罗技方向盘SDK开发笔记

    这段时间因为项目需求,接触到了罗技G29方向盘的SDK开发,能够参考的资料比较有限,一路磕磕碰碰遇见不少问题,硬着头走了下去,不过最后还是成功了,写下这篇笔记来记录下我的开发过程,也给有需要的人参考, ...

  6. Unity罗技方向盘接入

    要想在Unity中接入罗技方向盘的数据,首先必须安装驱动,并且打开安装的软件,否则在Unity中会一直连接不成功.状态如下: 然后下载相应的开发包Logitech SDK即可,需要替换相应的Logit ...

  7. HoloLens开发手记 - Unity development overview 使用Unity开发概述

    Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...

  8. Unity开发《一起来捉妖》教程 | 4.抛掷封妖灵珠

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"智哥,今天咱们来开发封妖灵珠?" 大智:"好啊,你觉得实现封妖灵珠 ...

  9. Unity开发《一起来捉妖》教程 | 3.随机妖怪位置及旋转提示

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"智哥,我找了个小精灵的模型,嘿嘿,不过我经常运行的时候找不到模型在哪,怎么办?&quo ...

  10. Unity开发《一起来捉妖》教程 | 2.用摄像头图像做背景

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"我们接下来是不是需要将显示融合到屏幕上,才能称得上是AR呢?" 大智:&qu ...

最新文章

  1. Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷)
  2. JavaEE企业级快速开发平台jeesite4的使用和快速搭建项目
  3. leetcode-461-Hamming Distance
  4. 一天天过得很快啊,今天大家都干了啥?我们拿出来晒晒
  5. 字符串旋转 不同解法
  6. 《ASP.NET技术详解与应用实例》配套源代码下载
  7. 情人节程序员用HTML网页表白【时光不老,我们不散love520】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  8. B2C电商产品系统分析
  9. android 仓库管理 毕业论文,基于Android的仓库管理系统的设计与实现.zip
  10. 实对称矩阵可对角化的证明
  11. 装配uwsgi和nginx rabbitMQ
  12. 2017——小米——句子反转
  13. java 防止盗链AntiLeech
  14. windows win7电脑搜索功能失效怎么修复
  15. bmp/gif/jpg图象最底层原理分析
  16. 修改ffmpeg支持文件描述符,以适配android10沙箱机制
  17. 计算机微博实验报告,网络信息交流的工具与模式(实验报告).doc
  18. 《Getting Real中文版》读书笔记
  19. 极限等价无穷小量替换笔记
  20. 录取麻省理工计算机博士全奖,录取案例:美国麻省理工学院博士全奖录取

热门文章

  1. java基础编程题书籍
  2. 国内统一Android应用市场,最全最干净的安卓应用市场
  3. 软件测试的艺术(二)
  4. c语言的递归算法流程图,递归法_C语言递归法_递归算法经典实例
  5. java学习总结及心得体会
  6. 第三方模块:Python3 OS 文件/目录方法
  7. java缓存技术memcached实例
  8. 超实用VS Code插件推荐
  9. HenCoder Android 自定义 View 1-6:属性动画(上手篇)
  10. SWAT模型学习小技巧(一)