unity 开发HTC vive UI的交互

在HTC的VRTK插件里UI的交互最常见的就是依靠手柄发出一条射线然后和界面进行交互。

在VRTK里发出射线的脚本有两个VRTK_SimplePointer脚本和VRTK_BezierPointer脚本。这两个脚本的区别就是前者发出的射线是直线,后者发出的是曲线。

如图:

VRTK_SimplePointer发出的直线:


VRTK_BezierPointer发出的曲线:



一般为了方便我们都采用直线的方式来与UI进行交互。


与UI进行交互要给控制器添加的必备脚本有这些:VRTK_UIPointer脚本用来跟UI进行交互,VRTK_SimplePointer脚本是用来发射线的脚本,最后那个是下图中的events的脚本是控制交互事件的脚本。



VRTK_UIPointer脚本

中的Activation mode 是射线与UI的产生交互方式。

如下图:Hold _button 是按下键才会进入与UI产生交互的模式

Toggle_button 是按下一次键会进入与UI的交互模式,再按下一次就结束了与UI的交互模式,反复如此,何Toggle的功能一样。

Always_On就是永远都处在可以交互的模式


VRTK_SimplePointer脚本

中的Enable Teleport选项为人物是否可以进行瞬移功能。

Pointer Hit Color 为射线可以触及到物体的颜色,表示可以进行射线的功能

Pointer Miss Color为射线不能进行功能的颜色。

Pointer Visibility里面也有三个选项:


Always _on是永恒可以实时的看到射线

off则是永恒看不到,虽然看不到但不影响功能,射线的功能是依然存在的只是你看不到而已。

On_When_Active 是和上述中的Toggle功能一样的,相当于按键开,再按键就会关。


---------------------------------------------------------------------------------

以上是关于手柄必须以要绑定的脚本,下面讲关于UI该做哪些设置

----------------------------------------------------------------------------------

首先Canvas的渲染方式要改成world space,如下图:



默认的交互方式都是按住手柄的方向键(圆的那个)然后在点击扳机键进行交互(自己可以修改)。例如某个按钮点击后会触发某一事件,触发方式和非VR状态一样只是操作方式换成了手柄,当射线指到按钮上并且按下手柄的方向键按钮会变成红色,然后点击手柄的扳机键就会触发事件了。如下图:如果是要让UI跟着眼镜一起移动就将整个Canvas放到Camera(eye)的下面。如下图:



------------------------------------------------------------------------------------------------

来源:https://blog.csdn.net/alayeshi/article/details/78875179