本周任务:
完成输出成绩,将二维界面转为三维界面并实现用户通过动作控制射线交互。
我已经完成了输出成绩和将二维界面转换为三维界面,下面我将介绍如何实现用户通过动作控制射线交互。
制作过程:
在二维界面中的界面可以通过鼠标左键的点击实现,鼠标点击可以分解成两部分。
第一部分,鼠标光标移动到目标位置。
第二部分,用户按下左键触发。
在VR状态下,界面是三维界面不能通过鼠标交互。为了解决这个问题我选择使用自定义动作代替左键触发,这个解决方法是基于用户在学习过程中一直穿带诺亦腾设备,通过诺亦腾设备可以捕捉到用户的动作,当识别到用户有右手接触头部的动作就代表用户按下左键。用户可以触发,但是没有光标确定目标位置并不能正常交互。因此我们使用射线来确定用户想要触发的事件。
比较右手和头是否有接触,如果有则认为有按下按键事件,将按键事件设为鼠标左键。然后用WidgetInteraction来确定目标。
判断右手是否和头有接触:
从组件和视图可知,stu_RH为右手,stu_Haed为头。
判断是否有头部和右手的靠近的动作。
如果有,则触发鼠标左键按下。
到现在我已经完成通过用户自身的肢体动作代替鼠标左键触发。但是缺少代替鼠标光标移动到目标位置。
这里我通过射线代替光标锁定要点击的对象。
因为我们使用vive的头盔,我想从头部发射射线,因此我将widgetInteraction放在摄像机下面。
为了能够接触到界面,我将射线长度调为1000
为了射线能够显示,将Show Debug设为true
为了使用户可以清晰的看到射线当前悬浮在那个按钮上,我将所有ui的按钮Hover和Press的按钮背景改为与normal模式下不同的背景。