網頁

顯示具有 HoloLens-手勢 標籤的文章。 顯示所有文章
顯示具有 HoloLens-手勢 標籤的文章。 顯示所有文章

2018年6月27日 星期三

場景切換後按鈕點擊一次變成兩次

我使用HoloToolkit提供的ButtonHolographic這個Button,
並且在裏頭寫了一些我希望Button做的事,
其中該具備的各項功能與參數都已經寫好並測試好。

豈知,在不同場景之間互相切換之後,卻碰出一個詭異到不行的問題。

問題是:明明對button做一次的click,可是他卻變成兩次click。

於是只好到處看論壇,找找看是否有人跟我遇到相同問題。
在GitHub論壇[連結],我找到了這篇貼文:InputManager causing UI events to fire twice

這篇貼文與討論,高手如雲。
我最後是用以下這段程式碼解決的。
概念上是這樣的,一旦他偵測到兩個click之間的間隔時間太短,就不執行這個function。
所以第一個click抓到之後,第二個如果時間間隔太近,就離開function。
如此,就如同只發生一個click而已。

private float lastClickTime = 0;
private float debounceDelay = 0.005f;
public void OnInputClicked(InputClickedEventData eventData)
{
  if(Time.time - lastClickTime < debounceDelay)
  {
    return;
  }
  lastClickTime = Time.time;
  // do stuff
}

這個解法是被動式的解法,嚴格說並非求甚解而得,
但短期內還得仰仗HoloToolkit的prefab的前提下,這是最快而且可解決問題的作法。

2018年5月25日 星期五

[HoloLens] 偵測 airtap手勢

在HoloLens的使用上,airtap手勢等同於滑鼠的click事件,其重要性不在話下。
我參考這篇文章 [連結],成功抓到airtap的事件驅動方式,而且非常容易。

1. 首先,假設您的Unity已經灌好HoloTookKit,那麼可以試著去找InputTapTest這個scene
    他的位置可能在 HoloToolkit\Input\Test\Scenes\InputTapTest
    此Scene裏頭有個cube,你可以airtap那個cube,那個cube會變大。

2. 接著,可以到 HoloToolkit-Example/Input/Script/ 找TapResponder.cs
    把這個script檔案指給舞台上的物件,測試時直接對該物件airtap,該物件會放大。

3. 複製TapResponder.cs,並依照您的需求加以修改,即可。


參考資料
HoloToolkit Unity - Gaze and Airtap [連結]