Steam VR SDK学习笔记(二)

18 篇文章 0 订阅

先给出本文所用到的unitypackage的下载地址:
Steam VR SDK:http://download.csdn.net/detail/zzmkljd/9675460
Steam VR Unity Tooklkit:http://download.csdn.net/detail/zzmkljd/9675462
VR Arc Teleporter :http://download.csdn.net/detail/zzmkljd/9675467

今天导入了一个叫 VRTK - SteamVR Unity Toolkit 的插件,基本上考虑了所有将会用到的情况。
下面要总结的就是在这个插件下手柄的用途:
首先说一下VRTK_ControllerEvents类,这个类提供了各种按钮事件的委托,而按钮按下或者松开的过程一般只会调用事件方法一次,是以下情况的前提条件。
一、镭射光线
脚本:VRTK_SimplePointer
调用事件(VRTK_ControllerEvents):AliasPointerOn、AliasPointerOff
可用事件(VRTK_ControllerPointerEvents_ListenerExample):
PointIn
只要射线碰到有Collider的物体就会执行,执行多次。
PointOut
移出有Collider的物体或者从一个物体到另一个物体时执行,执行一次。
DestinationSet
在松开Pointer的按钮传送至另一位置时执行,执行一次。

二、与物体交互

1.Touch(触摸)
脚本:VRTK_InteractTouch+VRTK_InteractableObject
可用事件(VRTK_InteractableObject类):
InteractableObjectTouched
在OnTriggerStay()中调用,碰到物体时执行一次,传入被Touch的物体

InteractableObjectUntouched
在OnTriggerStay()中调用,两个物体切换时执行一次,传入UnTouch的物体
在OnTriggerExit()中调用,离开物体时执行一次,传入UnTouch的物体

2.Grab(抓取)
脚本:VRTK_InteractTouch+VRTK_InteractGrab+VRTK_InteractableObject
调用事件(VRTK_ControllerEvents):AliasGrabOn、AliasGrabOff
可用事件(VRTK_InteractableObject类):
InteractableObjectGrabbed
由按钮事件调用,只在按下时执行一次,传入Grab物体
InteractableObjectUngrabbed
由按钮事件调用,只在松开时执行一次,传入UnGrab物体
分析:得到Touch的物体并初始化该物体位置再使用FixJoint将它的Pose与手柄的Pose保持一致。释放的过程亦然,只是释放时会将手柄的速度应用给物体的Rigidbody,实现Throw效果。

3.Use(使用)
脚本:VRTK_InteractTouch+VRTK_InteractGrab+VRTK_InteractUse+VRTK_InteractableObject
调用事件(VRTK_ControllerEvents):AliasUseOn、AliasUseOff
可用事件(VRTK_InteractableObject类):
InteractableObjectUsed
由按钮事件调用,只在按下时执行一次,传入Use物体
InteractableObjectUnused
由按钮事件调用,只在松开时执行一次,传入Unuse物体
分析:这种情况相当于自定义的使用用途,可以自定义用法,比如例子中的OpenTheDoor。

三、传送
在插件的例子中镭射光线就能实现简单的传送,而还有一个插件叫VR Arc Teleporter,可以实现比它更好一点的传送方式,原理为在一帧中发射最多500条逐渐向下的射线,如果碰到地面则中断得到碰撞点。如果按下Trigger则将相机位移至该点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值