Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

时间:2021-08-07 01:13:42

DEMO 025_Controls_Overview

交互控制器: 真实版 UI 元素。所有类型的控制器都继承自VRTK_Control。 

第一种交互控制器:按钮VRTK_Button

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

把这个脚本添加到游戏物体上,可以让这个游戏物体表现的和真实世界的按钮一样的物理特性,玩家通过触碰它,可以被按下,按钮按下时的移动方向可以*设置,也可以让脚本*侦测按钮周围的碰撞环境来确定按下的运动方向。

监听按钮按下的事件有两种方式:1 在Event OnPush 事件list 添加一个像UGUI 或 NGUI那样,当事件发生时,触发脚本中的方法。

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

另一种是用代码的方式:

GetComponent<</span>VRTK_Button>().events.OnPush.AddListener(handlePush);

HandlePush是事件触发时调用的方法。

关于按钮移动方向的设置

该按钮的移动方向是局部坐标的X轴,图中黄线的就是可移动的方向。

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

 Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

上图是有脚本*侦测的移动方向

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

脚本中connented to 是让按钮作为哪个物体的子物体,跟随之移动

第二种交互 滑调

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

参数和UI的滑调参数意义相似,规定了最小最大值。注意,滑调的左右移动的极限位置,如果Detect Min Max 打钩,即自动识别需要滑调左右有碰撞体作为边界如第一张滑调图片显示的ColliderBox。

获取改滑调的当前数值 

       Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

监听defaultEvent.OnValueChanged.AddListener

GetValue()是当前数值,GetNormalizedValue()是百分比数值

滑调事件有两个传入参数,第一个是当前slider 的当前滑动数值,第二个是归一化的当前滑动数值,即百分比:0-1

第三种 : 旋钮

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

类似电风扇的开关

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

Direction 是旋转的轴向。事件和slider 一样。  

其他交互控制器 :  宝箱  ,门 ,杠杆

Demo 026_Controller_ForceHoldObject

手柄握住的物体和其他物体碰撞是,震动反馈

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

DEMO 027_CameraRig_TeleportByModelVillage

触摸沙盘中目标位置的模型,移动到环境中对应的传送位置

DEMO 028_ CameraRig_RoomExtender

暂时没看到新的东西

Demo 029_Controller_Tooltips

提示器

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

 DEMO 030_Controls_RadialTouchpadMenu

 未研究

 DEMO 031_CameraRig_HeadsetGazePointer

 把传送抛物线的起点放到头部,而不是之前放到手柄处的做法,  功能没什么不同

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

DEMO 032_Controller_CustomControllerModel

用自定义的手来代替手柄模型

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

取消手柄的渲染组件

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

并且监听手柄输入事件来控制手的动作

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

 DEMO 033_CameraRig_TeleportingInNavMesh

在导航(navigation)物体上传送。和以往的普通传送设置无区别。唯一有影响的是不能传送到navimesh 边界附近。 

DEMO 034_Controls_InteractingWithUnityUI

和UI元素交互

首先需要在手柄上添加

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

参数 

activation Mode:和UI交互需要一个专门的激光指针   这个参数是激光显示的开关条件

Attempt click on deactivate:即使激光指针未显示时也可以激活UI 

Ignore canvas with tag or class:如果目标UI canvas的标签或添加了该参数名称的脚本名称时,忽略对它的操作

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)   Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

注意:是在canvas 组件的游戏物体上的tag和添加脚本 

监听UI pointer 的交互事件 

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

事件参数

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

DEMO 035_Controller_OpacityAndHighlighting

物体高亮显示时,变透明

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

Alpha 值为0

DEMO 036_Controller_CustomCompoundPointer

自定义抛物线模型元素

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

DEMO 037_CameraRig_ClimbingFalling

攀登移动

 Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

可攀登物体

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

DEMO  038_CameraRig_DashTeleport

移动传送和之前位置传送的方式不同,这是模拟行走的过程到目的地,在CameraRig预设体上

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

DEMO 039_CameraRig_AdaptiveQuality

自适应渲染屏幕像素等级,这个和valve 提供的The lab 渲染插件一个自适应渲染质量非常相似

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

相机位置模拟器

Unity Steam_VR 开发工具插件 VRTK自带案例分析(第二部分)

这个脚本用键盘来控制位移来代替眼镜控制头部的摄像机位置,测试时会方便很多。