UI交互:
1、给左右手控制Controller添加VRTK_Controller Highighter(关于颜色的设置)和VRTK_UI Pointer(主要是这个组件起作用)两个组件。
2、将需要交互的Canvas添加VRTK_UI Canvas组件。
3、这里Canvas的一些属性要修改一下,再Canvas的Inspector面板里面找Canvas->Render Mode属性,把它修改成World Space属性。(默认的属性是不能和UI进行交互的,因为VRTK一般是通过射线去交互,默认的属性是叠加在这上面,射线射不到它)
射线操作(一种是直线,一种是曲线):
1、选中需要交互的手柄,添加VRTK_StraightPointerRenderer组件或者VRTK_BezierPointerRenderer组件。
2、将VRTK_StraightPointerRenderer组件(渲染器)拖入到VRTK_Pointer的Pointer Renderer(渲染属性,Pointer Renderer属性决定发射的是直线还是曲线)属性里,这样发射的就是直线了。
3、同样将VRTK_BezierPointerRenderer组件拖入到VRTK_Pointer的Pointer Renderer属性里,发射的就是曲线了。
4、新建C#脚本,模仿VRTK_ControllerPointerEvents_ListenerExample脚本的写法,写一个自己的射线交互脚本(在脚本中添加 public VRTK.VRTK_ControllerEventes vrtkCtrlEvents;)(修改DoPointerHover函数为:
Private void DoPointerHover(object sender,DestinationMarkerEventArgs e)
{
if(vrtkCtrlEvents.triggerPressed)
{
Devug.Log(e.target.name);
E.target.GetComponent<MeshRender>().material.color = new Color(1,0,1);
}
})
5、将脚本挂载到控制器上,并赋值给vrtkCtrlEvents变量。
瞬移:
1、基于射线的1、2、3步之后
2、被传送的物体添加VRTK_Height Adjust Teleport(传送组件)组件或者VRTK_BasicTeleport组件。[VRTK_Height Adjust Teleport组件是高度可调节传送,VRTK_BasicTeleport组件是基本的传送。VRTK_Height Adjust Teleport继承自VRTK_BasicTeleport]。如何实现可以看下源码。
物体的抓取:
1、新建空物体VRTK Scripts,在其下新建两个空物体,分别是LeftController和RightController。
2、为这两个空物体添加VRTK_Controller Events(事件)、VRTK_Interact Touch(触碰)、VRTK_Interact Grab(抓取)三个组件。
3、在VRTK_SDK Manager下的Script Aliases属性里,把这两个组件拖拽进去。
4、创建一个被抓取物体,VRTK提供了贴心帮助,选中被抓去物体,然后在Window->VRTK->Steup Interactable Object(设置可交互物体),在这里可以中设置颜色,在Hold Button To Grab(按住键抓起)这个属性后面把对号勾上,其他的默认就可以了,然后点击确定。这样他就把需要的插件一次性添加上去了
5、被抓取的物体要有碰撞器。
错误排除:使用VRTK抓取报错,可以看下运行时VRTK_SDK Setup组件下的Actual Objects属性和Model Aliases属性下的物体是不是空(运行时是空的,不运行时都在),如果是空的就不要勾选Auto Populate属性(自动匹配),就用默认的那些就可以了。