首页 资讯 硬件 视频 视界娱乐 开发者中心 论坛

VR中的基础交互(一)

36评论 分享:QQ 微信 微博
Date:2016-10-18 10:12 来源: 未知
摘要:在虚拟现实中,我们经常需要激活一个用户正在使用或查看的的物体。在VR的项目实例中,我们已经建立一个简单化、可拓展、轻量级的系统来允许用户与物体交互体验。


在虚拟现实中,我们经常需要激活一个用户正在使用或查看的的物体。在VR的项目实例中,我们已经建立一个简单化、可拓展、轻量级的系统来允许用户与物体交互体验。包括三个主要脚本:VREyeRaycaster,VRInput,and,VRInteractiveItem 简单描述它下面这些类。


如图


这个脚本需要放在Main Camera。每个Update()的函数都会向前方投射一个射线,用Physics.Raycast来看射线是否碰到任何碰撞器。依照场景可以区分每一层,如果要为了性能可以需要移动或所有交互的对象都单独触发在一个层次。被射线击中,脚本会尝试在碰撞对象上寻找VRIntercactiveItem组件。


由此我们可以判断用户是否在看一个对象,或者已经停止查看一个对象。如果用户已经开始或停止查看一个对象,我们可以用它做一些事情,如调用一个方法。

VRInput


VRInput是一个简单的类,用来判断在GearVR或者DK2上发生滑动双击时控制计算机端输入设置。


VRInput里声明事件如下:


关于声明事件的信息,可以查看事件教程

http://unity3d.com/cn/learn/tutorials/topics/scripting/events)


VR交互元素


这是一个组件可以添加到任何对象组件上,在VR中交互时,需要一个绑定物体上碰撞提。

声明6个事件:


利用一个Bool值判断检测程序是否结束

之后你可以创建一个脚本对事件是否生效,一个非常简单用了一些事件的例子。






看一些基础例子,在VRSampleScenes/Scenes/Examples/的交互场景

 


射线选择和滑条选择

我们利用射线选择(SelectionRadial)和滑动条选择(SelectionSlider)来可以让用户玩家按下Fire1并保持可以来交互:



 

当输入被按下时,选择栏填充,当填充满的时候触发OnSelectionComplete()或OnBarFilled()事件发生。这两个函数代码可以在SelectionRadial.cs和SelectionSlider.cs中找到,建议使用这个代码。借助虚拟现实我们想确保从用户体验角度来看,用户知道他们在做什么,感觉时刻在受到控制。



VR交互例子


主要看看每个场景的一些交互是如何拓展。

菜单栏场景交互

每个菜单栏场景有几个组件。其中包括MenuButton,VRInteractiveItem,和Mesh Collider。



在MenuButton 组件上有OnOver()和OnOut()事件与VRInteractiveItem组件,当光标在菜单屏幕上方时,鼠标可以选择消失。当光标可以看见时,按下Fire1 射线填满


如图


这个类也有OnSelectionComplete事件挂在SelectionRadial上,然后当射线填满时,HandleSelectionComplete被调用。



让看一些射线选择的例子,主要屏幕中的准心红色元素。


空选择径向可见,当用户正在看菜单屏幕


射线选择器正在填充(用户正在查看的菜单屏幕,并按Fire1键输入)。


我们尽量保持项目原有的风格,我们建议自己做VR项目时想一下整体性的问题,一致性用户体验让用户放心,并会帮助他们适应可能是一种新的媒体为他们。