1、360°旋转视角

添加其余的视角-扩张

添加好的层级关系:位置-头部-眼睛-耳朵

2、集成手柄
创建游戏对象,分别为左右手,添加脚本:
1、SteamVR_ControllerManager

2、SteamVR_TrackedObject 此类是根据Index来获取跟踪信息并反馈到Unity中。
注:修改Index为none

3、SteamVR_GameView
这个脚本主要负责将游戏画面绘制到窗口上去

4、代码获取手柄对象:
//1获取到某个按键的状态
var device = SteamVR_Controller.Input(uint);
device.GetTouchDown(SteamVR_Controller.ButtonMask)
//2获取当前所有的按键状态
var system = OpenVR.System;
system.GetControllerState(uint, ref VRControllerState_t))
5、手柄震动
public void TriggerHapticPulse(ushort durationMicroSec = 1500, EVRButtonId buttonId = EVRButtonId.k_EButton_SteamVR_Touchpad)
{
var vr = OpenVR.System;
if (vr != null)
{
var axisId = (uint)buttonId - (uint)EVRButtonId.k_EButton_Axis0;
vr .TriggerHapticPulse(ControllerIndex, axisId, (char)durationMicroSec);
}
}
或者可以
var device = SteamVR_Controller.Input(uint);
device. TriggerHapticPulse();
6、SteamVR_Controller
控制器的相关信息都包含在SteamVR_Controller这个脚本之中
而这个脚本是被SteamVR_Render中的Update函数调用,从而循环获得手柄相关信息

当我们需要使用这些事件时直接监听这些事件即可。

ButtonMask类:手柄各按键的名称
Input()函数:根据Index初始化Device[]数组,并实例化所有16个Device。
Device类:最重要的类,封装了跟踪设备的全部信息。
Device类包含:


GetAxis:获取手柄上圆盘坐标或Trigger的行程值(0-1),函数默认参数是手柄上的Touchpad。共有5个AxisId参数可选,0是TouchPad,1是Trigger,2,3,4应该是没有用的,且此函数只接受EVRButtonId类参数而不接受ButtonMask。
TriggerHapticPulse:手柄震动控制函数,参数名称解释的是时间,默认500,但实际上控制的是震动的强度。默认AxisId是EVRButtonId_touchpad,选择其他EVRButtonId没用(等价参数axis0可以),其会调用OpenVR中的同名函数。参数超过4000会无效,导致震动不触发。可以通过协程的while(true)+waitforsecond控制震动间隔,通过stop协程控制震动结束。同上4操作。

GetHairTrigger
GetHairTriggerDown:定义为有false转至true的过程,判断先前状态和当前状态。
GetHairTriggerUp:定义为有true转至false的过程,判断先前状态和当前状态。
HairTrigger是检测当你握住扳手超过一个固定值(0.1,可调)时即触发的状态。利用Trigger的变化量来做一个功能的触发
7、SteamVR_LaserPoint
主要实现手柄当前指向物体与离开物体的两个方法事件。使用射线检测

3、手柄渲染
SteamVR_RenderModel:该组件用于渲染手柄的模型,并且跟踪手柄的位置

4、活动空间(即玩家的活动空间)
SteamVR_PlayArea
用于显示游玩区域

5、HTC Vive参数
HTC vive
参数配置:
分辨率:单眼 1200 x 1080 的分辨率
刷新率:最高可达 90hz
位置追踪范围:4.5m x 4.5m
其他配置:配套的带有位置追踪的游戏控制器等
推荐电脑配置:
处理器:Intel i5-4590/AMD FX 8350同等或更高配置
内存:4GB及以上
显卡:NVIDIA GTX970/AMD R9290同等或更高配置
系统:windows 7 SP1 或更高版本
视频输出:HDMI 1.4或者DisplayPort 1.2或更高版本
USB接口:1 x USB 2.0 或更高版本的端口
游戏区域要求:
空间定位:空间最小为 2 米 x 1.5 米 (6 英尺 6 英寸 x 5 英尺)
基站间最大距离为 5 米 (16 英尺)
站立/坐立:无最低空间要求
6、参考:
http://www.jianshu.com/p/8cce89d2aef3
一个人的路需要更多人的陪伴:欢迎加群: 134688909 一起交流,分享心得,获取项目资源。
网友评论