SteamVR—VRTK基本配置及射线的使用

一、VRTK 环境搭建

前提:首先需要从商店导入 SteamVR(V1.2.2 )以及 VRTK(V3.2.1 )

 新建一个空物体改名为[VRTK_SDKManager],并且添加脚本VRTK_SDKManager

 新建一个空物体改名为[VRTK_SDKSetup],并且添加脚本 VRTK_SDKSetup

  SteamVR 中的[CameraRig]拖到[VRTK_SDKSetup]下做其子物体

 选择脚本 VRTK_SDKSetup  Quick Select  SteamVR,如下所示:

SteamVR—VRTK基本配置及射线的使用_第1张图片

 点击脚本 VRTK_SDKManager 的“Auto Populate”,如下所示:

SteamVR—VRTK基本配置及射线的使用_第2张图片

 

 [VRTK_SDKManager]新建三个空物体,并改名为 LeftControllerRightControllerPlayerArea,首先给 LeftControllerRightController 加基础交互脚本(如下图 1 所示),然后在给 PlayerArea 添加瞬移脚本(下图 2 所示)

SteamVR—VRTK基本配置及射线的使用_第3张图片

SteamVR—VRTK基本配置及射线的使用_第4张图片

 

 如果需要给左右手柄按钮添加提示信息,则将VRTKàPrefabsàControllerTooltips 拖入到 LeftController

RightController 下,如下图 1、图 2 所示:

SteamVR—VRTK基本配置及射线的使用_第5张图片

SteamVR—VRTK基本配置及射线的使用_第6张图片

 再 LeftControllerRightController 拖入脚本 VRTK_SDKManager 

二、手柄发射射线使人物位移

 

首先要在PlayerArea上添加脚本VRTK_Basic Teleport,这个脚本是控制人物位移的基础脚本。

 

然后我们需要在左手柄控制器上画射线,VR中由于没有直接控制人物移动的方法,一般情况下都是通过射线指向地面的不同地方,使人物通过瞬移到射线射到地面的点来进行移动。

 

对物体添加VRTK_ControllerEvents脚本,这个脚本是监听手柄的按键。

 

添加VRTK_Bezier Pointer Renderer脚本,这是画曲线射线的脚本,一般通过曲线射线在地上的接触点来确定人物移动的位置,而VRTK_Straight Pointer Renderer脚本是画直线射线的脚本,也可以用来确定人物位移的位置,不过通常把直线射线用来进行交互事件,而用曲线来进行位移。

 

添加VRTK_Pointer脚本,这个脚本可以让手柄发射射线,通过与前一个画射线的脚本进行结合来实现手柄发射射线功能。

SteamVR—VRTK基本配置及射线的使用_第7张图片

 

需要注意的是Enable Teleport这个属性一定要勾选上,否则无法进行射线瞬移功能。Pointer Randerer要选择一种射线,否则就无法看到手柄发射的射线,而Pointer Interaction Settings的两项属性是控制抓取功能的,尤其是Grab To Pointer Tip这属性可以精确到点的抓取。

 

通过以上的脚本就能确定人物的瞬移功能。按着手柄Touchpad键,手柄会发射一条抛物曲线到地面上,松开按键,人物就能瞬移到目标点。

三、手柄对物体的抓取

 

通过前边对手柄实现瞬移功能的理解,我们知道了使用手柄的基本操作,就是通过VRTK__ControllerEvents脚本监听按键事件,通过VRTK_Straight Pointer Renderer和VRTK_Pointer两个脚本画出直线射线进行相关的交互功能。

 

添加VRTK_Interact Grab,VRTK_Interact Touch,VRTK_Interact Use,VRTK_Interact Use_Unity Events等脚本使手柄有抓取功能 。其中的Touch脚本是当手柄接触物体是才能触发。

SteamVR—VRTK基本配置及射线的使用_第8张图片

SteamVR—VRTK基本配置及射线的使用_第9张图片

SteamVR—VRTK基本配置及射线的使用_第10张图片

 

需要注意的是脚本中的Controller Events属性要添加需要监听的手柄,在Use的Events中添加手柄,选择VRTK_InteractGrab.AttemptGrab方法,这样手柄的抓取功能基本就设置好了,然后在对需要抓取的物品进行设置就能实现手柄抓取物品的功能。

 

被抓取的物体Cube方块需要添加VRTK_Interactable Object脚本,从而确定手柄的事件能够监听到Cube上。

SteamVR—VRTK基本配置及射线的使用_第11张图片

 

其中脚本中的Is Grabbable是确定物体能否被抓取,Stay Grabbed On Tele是确定瞬移的时候还能保持抓取物体的状态。而Grab Attach Mechanic和Secondary Grab Action两个属性是通过添加VRTK_Child Of Controller Grab Attach和VRTK_Swap Controller Grab Action两个脚本进行添加的。脚本添加完以后,要想让物体被抓取还有一个重要的地方,就是让物体有碰撞和刚体,否则还是无法进行物体的抓取。

 

通过按着手柄的Touchpad键,手柄发射一条直射线,当射线射到Cube上,按着Trigger键就能通过射线把Cube抓起来,当手柄接触Cube时,按着Grip可以把Cube直接抓到手柄上,也能实现抓取功能。

 

你可能感兴趣的:(SteamVR)