Qualcomm技术论坛
直播中

臧超楠

7年用户 190经验值
私信 关注
[经验]

unity基础开发:高通AR Unity虚拟按钮

高通开发AR都想用到互动,虚拟按钮互动可以实现虚拟和现实的结合互动。

我使用的版本是vuforia-sampleapps-unity-2-5-8的,具体怎么得到这个看http://blog.csdn.net/liang_704959721/article/details/9201765

主要代码



/*==============================================================================
Copyright (c) 2010-2013 QUALCOMM Austria Research Center GmbH.
All Rights Reserved.
==============================================================================*/
using UnityEngine;
using System.Collections.Generic;
///
/// This class implements the IVirtualButtonEventHandler interface and
/// contains the logic to swap materials for the teapot model depending on what
/// virtual button has been pressed.
///

public class VirtualButtonEventHandler : MonoBehaviour,
IVirtualButtonEventHandler
{
private GameObject mTeapot;
void Start()
{
// Register with the virtual buttons TrackableBehaviour
VirtualButtonBehaviour[] vbs = GetComponentsInChildren();
for (int i = 0; i < vbs.Length; ++i)
{
vbs.RegisterEventHandler(this);
}
// Get handle to the teapot object
mTeapot = transform.FindChild("teapot").gameObject;
}
#endregion // UNITY_MONOBEHAVIOUR_METHODS
#region PUBLIC_METHODS
//按下
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
//Debug.Log("OnButtonPressed");
if(vb.VirtualButtonName=="button")
                {
                        print("button name!!!");
                }
                if(vb.VirtualButtonName=="buttoon_text")
                {
                        print("button_text ");
                }

}
//释放        
public void OnButtonReleased(VirtualButtonBehaviour vb)
{

                 if(vb.VirtualButtonName=="button")
                {
                        print("button name released !!!");
                }
                if(vb.VirtualButtonName=="buttoon_text")
                {
                        print("button_text released");
                }

}
#endregion // PUBLIC_METHODS
}

/*==============================================================================
* Copyright (c) 2012-2013 Qualcomm Connected Experiences, Inc. All Rights Reserved.
* ==============================================================================*/
using UnityEngine;
using System.Collections.Generic;
///
/// This class implements the IVirtualButtonEventHandler interface and
/// contains the logic to swap materials for the teapot model depending on what
/// virtual button has been pressed.
///

public class VirtualButtonEventHandler : MonoBehaviour,
IVirtualButtonEventHandler
{
#region PUBLIC_MEMBER_VARIABLES
///
/// The materials that will be set for the teapot model
///


#endregion // PUBLIC_MEMBER_VARIABLES
#region PRIVATE_MEMBER_VARIABLES
#endregion // PRIVATE_MEMBER_VARIABLES
#region UNITY_MONOBEHAVIOUR_METHODS
void Start()
{
VirtualButtonBehaviour[] vbs = GetComponentsInChildren();
for (int i = 0; i < vbs.Length; ++i)
{
vbs.RegisterEventHandler(this);
}
}
#endregion // UNITY_MONOBEHAVIOUR_METHODS
#region PUBLIC_METHODS

///
/// Called when the virtual button has just been pressed:
///

public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
if (vb.VirtualButtonName == "Button01")
{
GameObject obj = GameObject.Find("ankylosaurus");
obj.animation.Play();
print("123456");
}
}
///
/// Called when the virtual button has just been released:
///

public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
if (vb.VirtualButtonName == "Button01")
{
GameObject obj = GameObject.Find("ankylosaurus");
obj.animation.Stop();
print("wwwww");
}
}

#endregion // PUBLIC_METHODS
}


添加到这个物体上ImageTarget,在添加





注意 virtual Button Behaviour 这个脚本的name就是vb.VirtualButtonName=="button";

这样就ok了

更多回帖

发帖
×
20
完善资料,
赚取积分