高通开发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;
/// <summary>
/// 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.
/// </summary>
public class VirtualButtonEventHandler : MonoBehaviour,
IVirtualButtonEventHandler
{
private GameObject mTeapot;
void Start()
{
// Register with the virtual buttons TrackableBehaviour
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; ++i)
{
vbs[i].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;
/// <summary>
/// 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.
/// </summary>
public class VirtualButtonEventHandler : MonoBehaviour,
IVirtualButtonEventHandler
{
#region PUBLIC_MEMBER_VARIABLES
/// <summary>
/// The materials that will be set for the teapot model
/// </summary>
#endregion // PUBLIC_MEMBER_VARIABLES
#region PRIVATE_MEMBER_VARIABLES
#endregion // PRIVATE_MEMBER_VARIABLES
#region UNITY_MONOBEHAVIOUR_METHODS
void Start()
{
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; ++i)
{
vbs[i].RegisterEventHandler(this);
}
}
#endregion // UNITY_MONOBEHAVIOUR_METHODS
#region PUBLIC_METHODS
/// <summary>
/// Called when the virtual button has just been pressed:
/// </summary>
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
if (vb.VirtualButtonName == "Button01")
{
GameObject obj = GameObject.Find("ankylosaurus");
obj.animation.Play();
print("123456");
}
}
/// <summary>
/// Called when the virtual button has just been released:
/// </summary>
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了