かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

HoloLens で AirTap 検出したいね

AirTapが基本的なアクションなので、それを契機に何かするってのはよくあることでしょう。 ということで、やり方メモ。

下準備

HoloToolkitを入れたプロジェクトを準備します。

シーンのMain Cameraをさくっと消します。

HoloToolkit/Input/Prefabs/HoloLensCameraというものがあるのでHierarchyにぽとっと置きます。次にHoloToolkit/Input/Prefabs/InputManagerもHierarchyにぽとっと置きます。

これで、今まで空のゲームオブジェクト作って、Gaze Managerをつけて~Input Managerつけて~とかやってたのが楽に出来るらしい。

AirTap 検出!

次に C# のスクリプトを1つ作ります。この人はHoloToolkit.Unity.InputModule.IInputClickHandlerを実装します。何かオブジェクトに、このスクリプトをくっつけるとインターフェースのOnInputClickedメソッドが呼ばれます。

こんな感じで作ってみました。

using HoloToolkit.Unity.InputModule;
using UnityEngine;

public class AirTapBehavior : MonoBehaviour, IInputClickHandler
{
    public void OnInputClicked(InputClickedEventData eventData)
    {
        this.gameObject.GetComponent<Renderer>().material.color = Color.red;
    }
}

Hierarchyに適当にCubeを置いて適当な位置に設置します。

f:id:okazuki:20170816232229p:plain

このCubeに、さっきつくったAirTapBehaviorをぽとっと落とします。そして実行。

AirTap前

f:id:okazuki:20170816232900p:plain

AirTap後

f:id:okazuki:20170816232848p:plain

ちゃんと動いてるっぽい。