虛擬按鈕,讓我們可以觸摸現實中虛擬存在的按鈕而觸發事件,通俗來講,就是讓人感覺自己可以觸摸虛擬物體一般,話不多說,咱就來試試。如何導入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 initialization
void 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