虚拟驾驶——方向盘

来源:互联网 发布:淘宝30字好评 编辑:程序博客网 时间:2024/04/28 02:33

刚转行到Unity开发,目前从事于VR虚拟驾驶方向,简单的从一个新人角度发些帖子,记录下~

【硬件】:有一个外接模拟驾驶方向盘,档位、手刹及踏板

【软件】:unity5,C#2015

【目的】:让Unity场景中方向盘随硬件设备(方向盘)转动而实时转动

【难点】:方向盘转动方向怪异(转动方向不对)、硬件设备在Unity中获取方式

一、方向盘转动

调用localEulerAngles方法,保证steeringWheel的坐标为0(transform、rotation)

Hierarchy面板中:
这里写图片描述

第一层:作为方向盘本身父物体的父物体(上图中第一层),目的是保证方向盘朝向正确,调整其Rotation,使其Local下坐标朝向正确;
这里写图片描述

第二层:作为方向盘本身的父物体,Transform需要Reset(保证Rotation坐标全为0,不Reset一下转动的时候会出问题的,这也是为什么一个方向盘分了3层—》套了2个空物体),之后使用localEulerAngles才能实现绕自身坐标轴转动)
这里写图片描述

第三层:方向盘本身(图中物体坐标轴为世界坐标轴)
这里写图片描述

然后在脚本中添加代码,让方向盘转起来;

steeringWheel.transform.localEulerAngles=newVector3 (0,0,-m_SteerWheelAngle);

我的方向盘是基于z轴旋转,所以x轴、y轴为0,方法里边z轴的参数,为方向盘的旋转角度,在我的项目中旋转角度是-540——540)

注意:在input中的设置,Dead为灵敏度(值越小越灵敏),各属性含义可查询官方文档;
这里写图片描述

二、硬件设备在Unity中获取方式

我们的设备是一个模拟驾驶设备(照片稍后传上来)
先从我接触这个模拟设备描述:一开始看到这个设备有点蒙,毕竟之前没用过,这咋在Unity中获取相应的数据呀。。然后开始百度,找到了相应的方法:
(1)查找到 USB Force Feedback Wheel 确认外接设备是否正常;(控制面板—硬件—设备)
选择USB力回馈控制器—》右键选择游戏控制器—》选择属性
这里写图片描述

调试外接设备,观察下图中的变化
这里写图片描述
(2)在Unity的Input界面中确定输入信息获取;
通过测试得知,上图中的按键3在Unity的Input中获取方式如下:
注意Gravity、Sensitivity、Dead的配置—》通过阅读官方文档
这里写图片描述

Ps:在不同的外接设备中,有不同的数据获取方式;
在上述外接设备中,油门和刹车控制垂直方向数值(-1到1),Unity中可以用获取虚拟轴Y轴来配置;
但在G29方向盘中,离合器控制垂直方向数据(-1到1),而油门和刹车需要进行测试,才可知道如何在Unity中的Input中进行数据获取(需要根据实际情况写转换算法)

1 0