Unity操作VR设备交互

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属性(自动匹配),就用默认的那些就可以了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容