注意:Unity需要使用2020以上的版本

一:选择最新版本插件

1.下载SteamVRPlugin和VRTK v4

新版本的Unity,已经关掉了资源商店的功能,下载插件需求先去官网资源商店添加我们需要的插件

(我随便找一款商店资源)

点击添加到我的资源,然后我们再打开Unity

Unity(Window-PackageManager)

打开PackageManager窗口,资源类型选择MyAssets

选中SteamVR和VRTKv4,右下角先点击Downloade,将资源下载下来,下载完成后,再点击import,就完成了插件的导入

SteamVR 2.0

启动SteamVR后,会弹出一个窗口,是否配置VR动作,我们先一起来了解一个这个吧

我们在配置前,要先知道为什么要做这个配置

在旧版本的SteamVR项目开发中,我们在编译脚本实现功能的时候,例如做拾取物品时,我们监听手柄的trigger按钮状态,在按下时,拾取手边的道具,用户在使用我们的产品时,需要按照我们开发的规则来使用,可能就会和用户日常的使用习惯冲突,可能用户在使用别的产品时,拾取物品是Grab键,这就导致用户每次使用一个新的产品,都要在适应操作这一块花费大量时间精力,使得使用起来的体验感变差

在新版本的SteamVR项目开发中,当我们在做相同的功能时,就不再监听手柄按钮了,我们监听SteamVRInput的Actions

(Window-SteamVRInput)先打开这个SteamVRInput窗口

我们可以看到,SteamVR2.0内置了很多Actions,这些基本已经能满足日常的开发需要了,我们要了解一下这些Actions

在SteamVR配置面板中会关联到这里的设置

我们注意到下面有一个type可以选择,per hand(每只手),morrored(镜像),hidden(隐藏)

 default : 默认设置

SteamVR内置的这些默认事件,总共有6个type

  1. boolean:一些按键,是否按下
  2. vector1:[0-1]的一个范围值可以判断按钮按到哪个程度
  3. vector2:遥感或者触摸板信息
  4. vector3:输入一个三维值
  5. pose:输入三维空间的位置和角度
  6. skeleton:比如手部的关节信息

platformer: 平台游戏

两项输入,Move移动,Jump跳跃

buggy:模拟驾驶

Steering方向,Throttle油门,Brake刹车,Reset复位

mixedreality:混合现实

配置:新建一个Action

如果我们想要了解VR输入事件的工作原理,最好的方法就是从头开始,了解一遍

  • 新建一个NewAction

观察它的ActionDetails

Full Action Path :这个是配置路径

Name:事件名称

Type:输入事件类型

Required:事件的级别(Optional可选可不选,Suggested推荐选择,Mandatory强制选择)

  • 设置它的细节

  • 保存设置,然后打开控制器按键设置

配置:添加手柄对应Action

  • 将我们设置的新事件,配置上去

配置有镜像模式,勾选后两个手柄的基本功能就一致了,不勾选可以定义不同的事件

因为我们新设置的Action是一个boolean类型的,所以我想把它定义到扳机键上去,看看怎么设置吧

注意:我用的是Oculus设备,HTC在按键上会有差别, 注意有区别的地方,别配错了

1. 点击这边这个按钮

2. 我希望将它当做按键来使用

3.默认有点击和触摸两个选择,点击更多选项,可以有更多配置选择

4.我把它配置到单击上,找到我之前写好的testaction

5.这样就配置好了,有人可能会注意到右下角的设置按钮,针对个人习惯,可以微调这些参数,我们就不对它做什么设置了

6. 保存设置

Unity使用SteamVRInput的Action事件

  • 新建一个空场景,删掉原本的相机
  • 在场景中添加[CameraRig]预制件
  • 新建一个脚本,把它添加到一个空对象上
    //获取SteamVRInput配置的事件public SteamVR_Action_Boolean action = SteamVR_Actions.default_TestAction;//public SteamVR_Action_Boolean action = SteamVR_Input.GetAction<SteamVR_Action_Boolean>("InteractUI");void Start(){//添加事件响应的方法action.onStateDown += OnTestActionStateDown;action.onStateUp+=OnTestActionStateUp;}//响应回调private void OnTestActionStateUp(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource){Debug.Log("按键抬起");}//响应回调private void OnTestActionStateDown(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource){Debug.Log("按键按下");}
  • 运行之后,在按下我设定好的按钮之后,事件响应了,控制台输出了如下内容

  • 可以看到在action中,有这么多它的状态监听事件,在开发过程中,就可以按照自己想要的效果,监听不同的事件

  • 如果要确定到左手或右手按下按键,还可以这么写
     public SteamVR_Action_Boolean action = SteamVR_Actions.default_TestAction;//手柄控制器public SteamVR_Behaviour_Pose pose;void Update(){//手柄控制器上的设定事件按下if (action.GetStateDown(pose.inputSource)){Debug.Log("按键按下");}//手柄控制器上的设定事件抬起if (action.GetStateUp(pose.inputSource)){Debug.Log("按键抬起");}}
  • 把[CameraRig] 控制器中的左手或右手,拖到脚本上去就可以了

SteamVR2.0最基本的部分使用方法就清楚了,接下来就可以实现别的进阶功能

Unity使用SteamVR2.0 SteamVRInput配置和使用相关推荐

  1. Unity中SteamVR2.0 手柄交互调用方式

    再次接触到HTC Vive项目时发现交互已经跟几年前的写法不一样了,而且VRTK插件也需要找对应的版本才行,否则会报错,版本已经不兼容. 这里总结下我在项目中遇到的手柄交互在Unity中的调用: 1. ...

  2. Unity 关于SteamVR2.0手柄震动问题_ SteamVR_Actions.default_Haptic.Execute()

    SteamVR_Actions.default_Haptic.Execute(0,0.5f,100,200,SteamVR_Input_Sources.LeftHand); //该段代码未左手柄震动. ...

  3. SteamVR2.0开发指南(Yanlz+Unity+SteamVR+Plugin+OpenVR+InputSystem+Kunckles+VIVE+Oculus+OpenXR+立钻哥哥++ok++)

    <SteamVR2.0开发指南> 版本 作者 参与者 完成日期 备注 SteamVR2.0_Guide_V01_1.0 严立钻 2019.01.23 ++++SteamVR2.0开发指南: ...

  4. Unity3D开发技术研究-SteamVR2.0

    一.概述 笔者之前使用SteamV1.x+VRTK开发项目,发现SteamVR2.0与之前有重大更新,主要原因是随着越来越多的VR设备推出,控制器类型逐渐趋向于碎片化, 每当有新的控制器发布,都会给开 ...

  5. SteamVR2.0开发指南

    2019年02月14日 22:21:19 VRunSoftYanlz 阅读数:562 <SteamVR2.0开发指南> 版本 作者 参与者 完成日期 备注 SteamVR2.0_Guide ...

  6. SteamVR2.0 UGUI射线交互模拟

    SteamVR2.0 UGUI射线交互模拟 文章目录 SteamVR2.0 UGUI射线交互模拟 前言 一.开始前要做的准备 1.在项目开始前应当把环境给搭建好,在Unity项目中把SteamVR导入 ...

  7. SteamVR2.0基本思路及快速入门

    SteamVR2.0(我这里用v2.5版本)的动作捕捉与MFC中的变量绑定很相像,大致分三步 (1).在SteamVR Input中定义量A 变量类型决定可绑定哪个动作.比如要检测手柄扣板机动作,可以 ...

  8. creo 3.0计算机配置,Creo 3.0 Parametric 配置选项文件使用说明

    最近安装了Creo Parametric 3.0 F000,其配置选项与Creo Parametric 2.0有部分更新,研究PTC Creo® 3.0 Parametric 配置选项configop ...

  9. Boost1.62.0 + VS2015 配置

    Boost1.62.0 + VS2015 配置 标签: 

最新文章

  1. 避免神经网络过拟合的5种技术
  2. java注释是用什么标签_java的注释标签是什么?
  3. v8声卡调音软件_sE VOXTOON AF2评测:解决复杂跳线需求的声卡
  4. c++ winpcap开发(6)
  5. Hibernate-面试题
  6. java难度_你们觉得java难吗?
  7. 创新创业技术路线怎么写_怎么创业起步 如何写创业计划?
  8. JavaScript-数组相关作业
  9. “中华优秀科普图书榜”
  10. react中使用Route报错` A <Route> is only ever to be used as the child of <Routes> element, never rendered`
  11. 【Unity Shader 描边效果_案例分享】
  12. 一文读懂Java封装实例
  13. 游戏设计之基于高程图的三维地形绘制
  14. Flink 检测一段时间内的温度连续上升输出报警
  15. Neo4j 第一篇:在Windows环境中安装Neo4j
  16. 安卓手机在fastboot模式下刷机
  17. Python 1-22 测试
  18. Nim中文社区 官网现已上线!
  19. 对近期的学习内容进行一个梳理总结
  20. DD驱动鼠标键盘(驱动级别机器人使用鼠标键盘)

热门文章

  1. 如何制定企业5s管理制度手册?
  2. ios手游怎么投屏到电脑玩
  3. java实现将文件或图片压缩成zip包
  4. 软碟通刻录ISO到光盘
  5. 2500块接的外包Python项目,一款加密的直播引流软件
  6. 机械臂动力学建模(3)- Newton Euler牛顿欧拉算法
  7. Excel的两种密码如何删除?
  8. 从信息学奥赛获奖年级分布看信息学奥赛最佳学习线路
  9. 红米note4G单卡版刷魔趣重启一直进rec 解决
  10. 用RTF格式解决DrawText函数或Graphics.DrawString方法不能设置行距的问题