Unity Vuforia 虛擬按鈕的使用

使用Viforia偵測到目標之後,程式自動會顯示我們之前準備好的動畫。此時要和產生出來的動畫物件進行互動除了使用手機上的UI介面之外,也可以透過虛擬按鈕VirtualButton來達成,這篇文章將說明所需要使用的程式。

首先,要在ImageTarget物件中,使用Image Target Behaviour(Script)中的Advanced頁籤裡面加入虛擬按鈕,如下所示:

接著,同樣也是在ImageTaget物件中,加入一個新的Script,在這裡我們把它叫做VBtnController,它的內容如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;

public class vBtnController : MonoBehaviour
{
    public GameObject cube;
    public VirtualButtonBehaviour vb;
    public float speed = 100f;
    public bool Rotation = false;

    void Start()
    {
        VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
        for (int i=0; i<vbs.Length; i++)
        {
            vbs[i].RegisterOnButtonPressed(OnButtonPressed);
            vbs[i].RegisterOnButtonReleased(OnButtonReleased);
        }
    }

    public void OnButtonPressed(VirtualButtonBehaviour vb)
    {
        if (Rotation)
            Rotation = false;
        else
            Rotation = true;
    }

    public void OnButtonReleased(VirtualButtonBehaviour vb)
    {
        Debug.Log("Released");
    }
    
    void Update()
    {
        if (Rotation)
        {
            cube.transform.Rotate(0, speed * Time.deltaTime, 0);
        }
        
    }
}

在這個例中我們的虛擬按鈕主要控制的對象是一個正立方體(Cube),用來控制它是否需要旋轉。在這裡面使用了幾個public公用的屬性,在程式完成之後,會在面板中看到,請分別把對象的物件拖曳進入:

之後當程式開使運作時,我們就可以在按下虛擬按鈕時,切換Rotation這個變數,也就是可以控制Cube這個物件的旋轉狀態了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *