VRTK交互小笔记,VR场景中的交互设置分为两块,手柄设置和交互物体设置。
一、手柄的设置
触碰(VRTK_InteractTouch):
通过VRTK_InteractTouch脚本来控制,挂载了这个脚本后,手柄能够检测出何时碰到了场景中可触碰物体(挂载了VRTK_InteractableObject脚本)
抓取(VRTK_InteractGrab):
需要依赖于VRTK_ControllerEvents和VRTK_InteractTouch这两个脚本,VRTK_InteractGrab用于监听手柄的按键事件从而得知抓取或者放下交互物体,所以需要VRTK_ControllerEvents;
而只有在触碰了之后才能够被抓取到,所以需要通过VRTK_InteractTouch确定是否有触碰到可抓取物体,只有有效的触摸物体可以被抓住(挂载了VRTK_InteractableObject脚本,并且isGrabbable勾选)。
使用(VRTK_InteractUse):
需要依赖于VRTK_ControllerEvents,VRTK_InteractTouch和VRTK_InteractGrab这三个脚本
当手柄挂载了这四个脚本之后,就可以正常使用了:
二、交互物体的设置
在场景中需要交互的物体上挂载VRTK_InteractableObject脚本组件,挂载后可以用来被触碰,抓取和使用:
1.触碰
可以设置的参数如下:
2.抓取
抓取的设置参数如下:
对于抓取的操作,VRTK定义了两种:物体的触碰抓取方式和抓取到物体后物体可以进行的操作:
触碰抓取方式
可以在VRTK中的Scripts/Interactions文件夹中找到:
分别说明一下几个触碰抓取方式:
VRTK_BaseGrabAttach,VRTK_BaseJointGrabAttach
这两是所有抓取方式的抽象父类,下面几个抓取方式分别继承与这两个;
VRTK_ChildOfControllerGrabAttach
继承于VRTK_BaseGrabAttach,使用这种触碰抓取方式的物体当被抓取时会自动的成为手柄的子对象,使物体自然的跟随手柄移动和旋转。
VRTK_ClimbableGrabAttach
继承于VRTK_BaseGrabAttach,使用这种触碰抓取方式的物体会被标记为一个可攀爬的交互对象;
VRTK_CustomJointGrabAttach
继承于VRTK_BaseJointGrabAttach,可以在可交互物体上自定义一个抓取关节,运行时会把这个关节作为交互物体的子对象。
VRTK_FixedJointGrabAttach
继承于VRTK_BaseJointGrabAttach,抓取时,在手柄和抓取物体之间建立一个Fixed Joint来连接
VRTK_RotatorTrackGrabAttach
继承于VRTK_TrackObjectGrabAttach,这种抓取方式是给物体施加一个控制器方向的力让它旋转,适用于门或者车轮等物体;
VRTK_SpringJointGrabAttach
在手柄和抓取物体之间创建一个Spring Joint来连接;
VRTK_TrackObjectGrabAttach
继承于VRTK_BaseGrabAttach,这种抓取方式物体只是跟随手柄方向进行移动,当碰到其他刚体时,超过限制就会掉落。
抓取后的操作方式:
如下图所示,
分别说明一下几种操作方式:
VRTK_BaseGrabAction
同样的这个也是所有抓取后操作的抽象父类。
VRTK_AxisScaleGrabAction
在物体被另外一个手柄抓取时,能够控制物体的缩放。
VRTK_ControlDirectionGrabAction
允许物体在被另外一个手柄抓取时控制物体的旋转方向;
VRTK_SwapControllerGrabAction
允许抓取的物体在两个手柄之间交换
3.使用
当物体勾选上Is Usable后,说明物体可以被使用啦,需要使用到自定义的使用方法时要继承VRTK_InteractableObject,然后在重写其中的StartUsing方法即可: