HTC Vive初体验 简单场景的搭建 基本的输入检测
来源:互联网 发布:知乎周刊合集 编辑:程序博客网 时间:2024/05/17 02:58
版本:unity 5.4.1 语言:C#
Gear VR之前是在别人的工程上继续写的,所以场景搭建之类的也没有接触,最近可能要做Vive眼镜的东西,所以研究一下,记录一下网上课程中学到的知识。
首先是设备环境的搭建,网上教程很多,我就不细说了,一个头戴显示器、两个手柄、两个基站,在电脑上连接好就好。
其次是Steam VR软件的下载,进入Steam,点击库 -> 工具,搜索SteamVR下载好启动就行。
如下图,如果全部都是绿色的就是准备就绪了,这个时候就可以设置一下房间模式,然后可以游玩各类VR游戏了。
接着是Unity的VR插件,到其Asset Store中搜索SteamVR Plugin,下载好导入就可以,然后具体下载的本地路径是在这里(我老是找不到):
C:\Users\Administrator\AppData\Roaming\Unity\
在SteamVR的插件中可以找到三个预制体:
我们要用到的是CameraRig和SteamVR,这两个插件直接拖到场景中,禁用Unity默认生成的相机,启动之后,就能用Vive设备观看这个场景了,而且能用手柄移动。
下面是使用自己的Camera变成VRCamera的情况:
选中自己的Camera,添加一个脚本SteamVR_Camera,脚本上有个Expand按钮,没错点击一下,程序就会自动为你生成VR的Camera(我这边不知道为什么要点击按钮两次),效果出来就是下图:
接着添加两个手柄,在Camera(origin)下(不是最下面那个,那个好像没什么用)新建两个空的子物体,分别叫做Left Controller和Right Controller,再分别添加SteamVR_TrackedObject脚本,Index选择None。
再在两个Controller下面分别添加一个Mode的空子物体,物体上添加一个SteamVR_RenderModel的脚本,用来渲染手柄,其中把Shader设置为Standard就好。
最后在Camera(origin)这个根物体上填一个SteamVR_Controller Manager的脚本,把Left Controller和Right Controller拖进去。如果需要显示游玩区域的话,添加SteamVR_PlayArea脚本,里面的参数可以自己调节。
最终效果:
之后讲讲手柄输入事件的监听,两个手柄两个监听的脚本,分别由之前添加的SteamVR_TrackedObject提供事件的支持,所以第一步就是要获取该组件。
暂且设定为我们的脚本挂在手柄上,以下是测试的代码:
[RequireComponent(typeof(SteamVR_TrackedObject))]public class VRControllerTest : MonoBehaviour { SteamVR_TrackedObject trackedObject;void Awake () { trackedObject = GetComponent<SteamVR_TrackedObject>(); //获取手柄上对应的脚本 }void FixedUpdate () { // 由手柄上的脚本获取设备 SteamVR_Controller.Device device = SteamVR_Controller.Input((int)trackedObject.index); // 监听扳机按钮 if(device.GetTouch(SteamVR_Controller.ButtonMask.Trigger)) //按住 Debug.Log("Trigger Touch"); if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger)) //按下 Debug.Log("Trigger TouchDown"); if (device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger)) //弹起 Debug.Log("Trigger TouchUp"); // Press版本,与Touch不同的是,按一次只会调用一次,而Touch会一直调用 if (device.GetPress(SteamVR_Controller.ButtonMask.Trigger)) Debug.Log("Trigger Press"); if (device.GetPressUp(SteamVR_Controller.ButtonMask.Trigger)) Debug.Log("Trigger PressUp"); if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)) Debug.Log("Trigger PressDown"); // 触碰圆盘的监听 if (device.GetTouch(SteamVR_Controller.ButtonMask.Touchpad)) Debug.Log("Touchpad Touch"); // 触碰原本获取方向,这是一个单位向量,根据按的位置,算出一个坐标值 if(device.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad)) { Vector2 dir = device.GetAxis(); Debug.Log(dir); } }}
完成!有了这一些基础之后就可以做一些好玩的东西了。
最后感谢一下NetFly童鞋讲师详细的讲解,和alps_01网友提供的触摸的测试。
- HTC Vive初体验 简单场景的搭建 基本的输入检测
- HTC VIVE开发初体验
- HTC Vive小场地与大场景空间的解决方案
- HTC Vive小场地与大场景空间的解决方案
- unity中检测不到HTC vive手柄的解决方案
- Unity的Htc Vive手柄按钮检测(转)
- 基于Unity3D 的Htc vive的基本交互
- HTC VIVE出现的问题
- Htc Vive的安装调试
- 使用UE4实现HTC Vive设备的简单操作
- 基于HTC vive 的 VR场景遍历及环境互动项目规划
- 使用Unity+HTC VIVE做VR时如何创建用户体验较强的菜单
- unity中htc vive物理射线检测碰撞的方法—Phsics.Raycast()
- HTC Vive的Lighthouse工作原理
- 基于 OSG OpenSceneGraph HTC Vive 的实现
- htc vive漂亮的激光线效果
- HTC Vive 扔球换材质的效果
- Unity HTC vive 物体的拾取
- HTTPS 升级指南
- 微信分享域名防屏蔽 防拦截网址系统 免费实时查询域名是否被微信拦截实时检测微信屏蔽域名api
- linux操作系统管理
- ora-47995 如何在windows环境下禁用Database Vault
- maven 配置报错 JAVA_HOME not found
- HTC Vive初体验 简单场景的搭建 基本的输入检测
- 利用手机基站获取位置
- BootStrap Table 获取同行不同列元素
- linux 如何自定义信号
- java等比例压缩图片
- 音频压缩工具——Speex的使用
- struts2核心概念
- Codeforces Round #387 (Div. 2) A---D
- Android去掉标题栏以及全屏显示