unity+vuforia(AR)(Virtual Buttons)

来源:互联网 发布:爱如生数据库 编辑:程序博客网 时间:2024/05/18 01:59

虚拟按钮,让我们可以触摸现实中虚拟存在的按钮而触发事件,通俗来讲,就是让人感觉自己可以触摸虚拟物体一般,话不多说,咱就来试试。如何导入vuforia包就不在此说明了,因为下载的249.65 MB的例子包含了所以的特征。

把ARCamera,ImageTarget,teapot拖到Hierarchy,还有我这四个颜色名字,就是把Virtual Buttons的预设(就是Prefab格式)拖四遍拖入,放置到图片相应的位置,然后重命名下名字。


点击ARCamera的编辑界面,打勾是惯例,不要忘了,这样才能识别该图。

默认的水壶可以设置下默认的材质(不设置也可以,为了好看点= =#)

虚拟按钮部分注意红框部分的名字也要修改,官方给的代码是根据名字来判断你触摸了哪个按钮的

最后我们来设置最重要的部分了,就是ImageTarget部分,第一个红框部分肯定不能忘吧。完成后,设置Virtual Button Event Handler脚本,我也忘了是否导入默认就有这个脚本,如果没有的话找到拖入即可。这里不要忘记把其他材质拖入,最后一个材质是默认材质,就是手不触摸按钮后默认的材质,其他都会随触摸变换。

这里就不贴最后的效果图了,最后运行触摸的话准确度还是挺不错的,放在最后要着重提几点,如果自己的项目放置虚拟按钮,要注意以下几点:

●虚拟按钮大小应大约是目标识别图大小的10%

●最好把虚拟按钮“高亮”,比如识别图上明确显示按钮的位置,提示这是可触摸的,会有事件反馈

●使虚拟按钮和周围有明显的(例色彩)对比(比如一张白纸上放个按钮,很难识别按钮)

●按钮距离边界要有充足的空间,避免按了按钮后追踪不到识别图了

对于按钮位置计算,因为有http://blog.csdn.net/ggtaas/article/details/38523719博主写明(感谢ggtaas),我就不再次说明了。

记得编辑下自己按钮的位置坐标,xml格式的文件,例下图

ImageTarget上自定义好自己的按钮事件脚本

脚本代码例如下:

using UnityEngine;using System.Collections;public class CustomVirtualButtonEventHandler : MonoBehaviour , IVirtualButtonEventHandler {// Use this for initializationvoid Start () {VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour> ();for (int i = 0; i < vbs.Length; ++i) {vbs [i].RegisterEventHandler (this);}}public void update(){}public void OnButtonPressed( VirtualButtonAbstractBehaviour vb ){Debug.Log (vb.VirtualButtonName+ " pressed");  }public void OnButtonReleased( VirtualButtonAbstractBehaviour vb ){Debug.Log(vb.VirtualButtonName+ " released" );}}

想要发生什么事件就自己定义吧,多学学Unity大笑

0 0
原创粉丝点击