DEMO 025_Controls_Overview
交互控制器: 真实版 UI 元素。所有类型的控制器都继承自VRTK_Control。
第一种交互控制器:按钮VRTK_Button
把这个脚本添加到游戏物体上,可以让这个游戏物体表现的和真实世界的按钮一样的物理特性,玩家通过触碰它,可以被按下,按钮按下时的移动方向可以*设置,也可以让脚本*侦测按钮周围的碰撞环境来确定按下的运动方向。
监听按钮按下的事件有两种方式:1 在Event OnPush 事件list 添加一个像UGUI 或 NGUI那样,当事件发生时,触发脚本中的方法。
另一种是用代码的方式:
GetComponent<</span>VRTK_Button>().events.OnPush.AddListener(handlePush);
HandlePush是事件触发时调用的方法。
关于按钮移动方向的设置
该按钮的移动方向是局部坐标的X轴,图中黄线的就是可移动的方向。
上图是有脚本*侦测的移动方向
脚本中connented to 是让按钮作为哪个物体的子物体,跟随之移动
第二种交互 滑调
参数和UI的滑调参数意义相似,规定了最小最大值。注意,滑调的左右移动的极限位置,如果Detect Min Max 打钩,即自动识别需要滑调左右有碰撞体作为边界如第一张滑调图片显示的ColliderBox。
获取改滑调的当前数值
监听defaultEvent.OnValueChanged.AddListener
GetValue()是当前数值,GetNormalizedValue()是百分比数值
滑调事件有两个传入参数,第一个是当前slider 的当前滑动数值,第二个是归一化的当前滑动数值,即百分比:0-1
第三种 : 旋钮
类似电风扇的开关
Direction 是旋转的轴向。事件和slider 一样。
其他交互控制器 : 宝箱 ,门 ,杠杆
Demo 026_Controller_ForceHoldObject
手柄握住的物体和其他物体碰撞是,震动反馈
DEMO 027_CameraRig_TeleportByModelVillage
触摸沙盘中目标位置的模型,移动到环境中对应的传送位置
DEMO 028_ CameraRig_RoomExtender
暂时没看到新的东西
Demo 029_Controller_Tooltips
提示器
DEMO 030_Controls_RadialTouchpadMenu
未研究
DEMO 031_CameraRig_HeadsetGazePointer
把传送抛物线的起点放到头部,而不是之前放到手柄处的做法, 功能没什么不同
DEMO 032_Controller_CustomControllerModel
用自定义的手来代替手柄模型
取消手柄的渲染组件
并且监听手柄输入事件来控制手的动作
DEMO 033_CameraRig_TeleportingInNavMesh
在导航(navigation)物体上传送。和以往的普通传送设置无区别。唯一有影响的是不能传送到navimesh 边界附近。
DEMO 034_Controls_InteractingWithUnityUI
和UI元素交互
首先需要在手柄上添加
参数
activation Mode:和UI交互需要一个专门的激光指针 这个参数是激光显示的开关条件
Attempt click on deactivate:即使激光指针未显示时也可以激活UI
Ignore canvas with tag or class:如果目标UI canvas的标签或添加了该参数名称的脚本名称时,忽略对它的操作
注意:是在canvas 组件的游戏物体上的tag和添加脚本
监听UI pointer 的交互事件
事件参数
DEMO 035_Controller_OpacityAndHighlighting
物体高亮显示时,变透明
Alpha 值为0
DEMO 036_Controller_CustomCompoundPointer
自定义抛物线模型元素
DEMO 037_CameraRig_ClimbingFalling
攀登移动
可攀登物体
DEMO 038_CameraRig_DashTeleport
移动传送和之前位置传送的方式不同,这是模拟行走的过程到目的地,在CameraRig预设体上
DEMO 039_CameraRig_AdaptiveQuality
自适应渲染屏幕像素等级,这个和valve 提供的The lab 渲染插件一个自适应渲染质量非常相似
相机位置模拟器
这个脚本用键盘来控制位移来代替眼镜控制头部的摄像机位置,测试时会方便很多。