MRが楽しい

MRやVRについて学習したことを書き残す

MRTKを用いてHoloLensのタップイベントを検出する

本日は MRTK の技術調査枠です。
MRTKを用いてHoloLensのタップイベントを検出する方法をまとめます。
以前、EventTrigger を用いて検出する方法をまとめましたが、今回は MRTK の IInputClickHandler を使う方法をまとめます。
bluebirdofoz.hatenablog.com

Unity で新規プロジェクトを作成したところから始めます。
環境は Unity 2017.4.3f1 と MRTK 2017.2.1.4 を利用します。
f:id:bluebirdofoz:20180722223722j:plain

MRTK 2017.2.1.4 をインポートします。
f:id:bluebirdofoz:20180722223736j:plain

Configure の Settings を全て反映した状態にします。
f:id:bluebirdofoz:20180722223750j:plain

「MixedRealityCameraParent」と「InputManager」が設定されていれば、まずはシーンの設定は完了です。
f:id:bluebirdofoz:20180722223800j:plain

次にタップイベントを検出するスクリプトを作成します。
IInputClickHandler を継承し、OnInputClicked 関数を作成します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HoloToolkit.Unity.InputModule;

public class TapTrigger : MonoBehaviour, IInputClickHandler
{
    public void OnInputClicked(InputClickedEventData eventData)
    {
        // タップ検出時の動作を記述する
        Debug.Log("Tap Event!");
    }
}

タップ操作を検出するオブジェクトとして、Cube オブジェクトを配置します。
f:id:bluebirdofoz:20180722223812j:plain

Cube オブジェクトに先ほど作成したスクリプトをアタッチします。これで設定完了です。
f:id:bluebirdofoz:20180722223822j:plain

試しにシーンの「再生」ボタンをクリックしてアプリケーションを起動してみます。
f:id:bluebirdofoz:20180722223830j:plain

デフォルト設定では「Game」画面で「Spaceキー」を押しながら「マウスの左クリック」を行うと、右手のタップ操作をサンプルシーン内で行えます。
コンソールログを確認すると、タップイベントがキャッチされていることが分かります。
f:id:bluebirdofoz:20180722223843j:plain