天天看點

《AR與VR開發實戰》——2.10 虛拟按鈕

使用vuforia實作增強現實之後,有時需要與這些虛拟模型進行互動,同時為了使互動方式更加魔幻,我們期望可以在真實的識别圖像上進行點選,進而觸發app中的某些行為。vuforia sdk為我們提供了virtual button功能來實作這樣的互動,本節我們将帶領大家使用這一特性實作兩個模型之間的切換。

1.插件下載下傳

《AR與VR開發實戰》——2.10 虛拟按鈕

2.建立unity工程

建立一個unity工程并将下載下傳好的插件導入unity,同時将識别圖資料包導入該工程。

3.場景搭建

首先删除場景中的main camera,接着從vuforia→prefabs中将arcamera和imagetarget拖入場景,在arcamera的inspector面闆下添加app license key,并激活目前識别圖資訊。

《AR與VR開發實戰》——2.10 虛拟按鈕

然後在imagetarget的inspector面闆下設定相應識别圖資訊。

接着在imagetarget下分别建立一個cube和一個sphere,并将project視圖中vuforia→

prefabs下的virtual button預制件拖入imagetarget。這裡将cube的棱長設定為0.3,将sphere的半徑設定為0.4,然後使它們的位置相同。為了便于觀察,我們建立兩個材質球,分别将cube和sphere設定為不同的顔色。最後在virtual button的inspector界面裡分别設定兩個virtual button的名字。

  

《AR與VR開發實戰》——2.10 虛拟按鈕

4.腳本編寫

在project下建立一個c#腳本,命名為virtualbuttontest.cs,并在腳本中添加以下代碼:

using unityengine;

using system.collections.generic;

using vuforia;

public class virtualbuttontest: monobehaviour,ivirtualbuttoneventhandler

{

}

該類的作用是實作ivirtualbuttoneventhandler這個接口,該接口中定義了onbutton pressed和onbuttonreleased兩個方法,這兩個方法能夠監聽虛拟按鍵的按下和釋放事件。為了觸發這兩個事件,我們還需要将之前添加的兩個virtualbutton對象注冊到事件系統中,是以需要在start()方法中查找這兩個物體,并調用virtualbuttonbehaviour類中的registereventhandler方法将目前對象作為參數傳入,具體的代碼實作如下:

void start ()

接下來在目前類中建立兩個gameobject類型的字段,分别對應之前建立的立方體和球體。

private gameobject cube;

private gameobject sphere;

接着在start方法中查找這兩個物體并指派給相應的字段。

cube = transform.findchild("cube").gameobject;

sphere = transform.findchild("sphere").gameobject;

在程式開始的時候,我們希望它們都不顯示,是以要先把它們藏起來。這就是start方法的最後一步需要做的事情:

cube.setactive(false);

sphere.setactive(false);

現在我們開始實作onbuttonpressed方法中的功能,此方法的唯一一個參數vb是virtualbuttonabstractbehaviour類型。在這個參數中可以擷取被按下的虛拟按鍵的名稱virtualbuttonname,将傳遞的名稱和場景中建立的名稱進行對比,就可以知道我們具體按下的是哪一個虛拟按鍵,具體代碼實作如下:

switch (vb.virtualbuttonname)

同理,onbuttonreleased實作方法基本相同,代碼如下:

5.功能實作

運作unity并掃描識别圖,由于我們在最開始将兩個物體隐藏起來了,是以看不到東西。

《AR與VR開發實戰》——2.10 虛拟按鈕

當我們“按下”左邊的showcube按鈕時,畫面如下。

《AR與VR開發實戰》——2.10 虛拟按鈕

接着,我們“按下”右邊的showsphere按鈕,效果如下。

《AR與VR開發實戰》——2.10 虛拟按鈕

到此,virtualbutton功能實作完畢。

關于虛拟按鈕,有以下幾點需要注意:

本節隻是實作了一個簡單的功能,大家可以根據自己的需求自定義virtualbutton事件。

可以使用ps等圖像處理軟體給識别圖加上虛拟按鈕的圖像,這樣會更直覺。

為了達到更好的體驗效果,識别圖可以複雜一些,尤其是在虛拟按鈕的位置。