VRTK_案例解析1-16

002_Controller_Events

一、作用。

监测手柄的各种输入:扳机、触摸板、侧键等等。

二、示例。

1.    手柄挂上 VRTK_ControllerEvents

pointerToggleButton:激光指示器打开/关闭的操作的按钮。

pointerSetButton:用于从指针的光标位置设置目标标记的操作的按钮。

2.例如按下扳机键:注册按下扳机键的事件,按下扳机键注册的方法即可执行,还可以拿到一些具体的参数。


 

003_Controller_SimplePointer

一、作用。

射线。

二、示例。

1.手柄挂上 VRTK_Pointer     VRTK_StraightPointerRenderer就可以摁下按键发出射线,并且把对应的手柄拖进来。

  

可以通过VRTK_DestinationMarker拿到射线指向的点的信息(如下图),包括距离、目标点的Transform、射线、目标点的世界坐标、是否传送等等。

监听事件如下

004_CameraRig_BasicTeleport

一、作用。

传送。

二、示例。

在[VRTK_Scripts]下随便创建一个空的gameobject,添加VRTK_BasicTeleport脚本。


参数:

(1)传送时过度颜色。

(2)在基本的传送脚本上可以改变褪色的闪烁速度,以提供定制的传送体验。将速度设置为0将意味着不会出现褪色的闪烁效果。

(3)在0到32之间的范围,决定了眨眼转换的时间长短取决于被传送的距离。一个值为0,将不会延迟瞬移瞬移效应在任何距离上,一个值32将延迟瞬移瞬变,即使距离传送的距离非常接近原来的位置。这可以用来模拟时间花费更长的时间来传递用户的远程端口。一个值16提供了一个适当的基础来模拟这个给用户。

(4)头部位置:以头部为基准,作为传送的位置。未打钩,则是玩家可玩区域的中心位置作为传送的目标点。可玩区域不能和游戏环境交叉,最大化玩家活动空间。

(5)禁止传送物体的标签:如果传送的目标位置的物体标签和此相同,则不能传送。

(6)navemesh 边缘限制:在navemesh 上传送,如果在 navemesh 的边界,则禁止传送,数值是离边界的距离范围。

另外如003中所述,手柄需要添加发射射线的脚本

VRTK_PointerVRTK_StraightPointerRenderer即可实现传送。


 

005_Controller_BasicObjectGrabbing

一、作用。

抓起物体。

二、示例。

在左手控制器上添加VRTK_InteractTouch、VRTK_InteractGrab

在需要抓取的物体上添加VRTK_InteractableObject即可,用手柄抓起物体之后,会默认给物体添加抓取方式VRTK_FixedJointGrabAttach组件,此外,换手操作需要给物体添加VRTK_SwapControllerGrabAction,高亮添加VRTK_OutlineObjectCopyHighlighter

 


 

006_Controller_UsingADoor

一、作用。

VRTK_InteractableObject扩展

二、示例。

这个Demo里用开关门的例子对VRTK_InteractableObject脚本进行了扩展。

 


碰到门 按一下侧键 就会调用一次StartUsing()


 

007_CameraRig_HeightAdjustTeleport

一、作用。

升降传送。

二、示例。

场景4中的传送是平面传送,同样的在[VRTK_Scripts]下创建的gameobject上添加VRTK_HeightAdjustTeleport组件,其他同案例4

snapToNearestFloor如果勾选,那么传送的Y位置将会吸附到离地面最近的位置(即不会漂在空中)。如果未勾选,那么传送的Y位置将是目标Y位置的位置(可以在空中)。

customRaycast:某个层的指定射线

layersToIgnore:忽略图层。

008_Controller_UsingAGrabbedObject

一、作用。

VRTK_InteractableObject扩展,类似场景6

二、示例。


 

009_Controller_BezierPointer

一、作用。

抛物线传送(贝塞尔曲线)。

二、示例。

手柄上需要添加的脚本如下图。



 

010_CameraRig_TerrainTeleporting

一、作用。

传送。

二、示例。

和场景9类似。

011_Camera_HeadSetCollisionFading

一、 作用。
头部碰到东西黑屏模拟眨眼。
二、 示例。
有一些黑屏的效果,最后是忽略的碰撞标签。
 

012_Controller_PointerWithAreaCollision

一、 作用。
传送的人的区域显示,并且可以设置碰撞是否可以传送。
二、 示例。
 
 
在手柄上添加VRTK_PlayAreaCursor 并且在贝塞尔曲线脚本里引用一下
  
此外,[VRTK_Scripts] 下PlayAreayao 要添加VRTK_HeadsetCollision脚本,这个脚本依赖于VRTK_HeadsetFade,即可。
 

013_Controller_UsingAndGrabbingMultipleObjects

一、 作用。
抓取和使用物体的扩展,VRTK_InteractableObject扩展。主要体现Hold Button To Grab/HoldButton To Use勾选和不勾选的区别。
二、 示例。
区别在于是否需要持续按键才可以进行操作。
 

014_Controller_SnappingObjectsOnGrab

一、 作用。
抓取的连接方式,以及抓取位置的设置(可以是自由抓取,或者是固定点抓取。)
例如:拿剑永远拿剑柄,拿枪可以拿枪柄也可以拿枪管。
 
二、 示例。
1.抓取位置
拿剑永远拿剑柄。
 
如果想要自由抓取的话只需要将Precision Grab勾选。
 
2.链接方式
比如上图中的剑,抓取连接方式为VRTK_FixedJointGrabAttach,关节链接的方式,抓住物体之后是可以碰掉的,有碰撞的存在。
比如下图的短棒,抓取连接方式为VRTK_ChildOfControllerGrabAttach,抓取后将短棒设置为手柄的子对象,并且将刚体上的 Is Kinematic 勾选,即不受力的作用,不会产生碰撞的感觉。
 

015_Controller_TouchpadAxisControl

一、 作用。
扳机键、触摸板、菜单键的交互。
二、 示例。
注册按键事件。
 
获得参数。
 

016_Controller_HapticRumble

一、 作用。
手柄震动。
二、 示例。
主要方法为下图,参数主要包括:引用手柄,震动强度,震动时间,震动频率等。
 

猜你喜欢

转载自blog.csdn.net/wxd444725262/article/details/80777205