お疲れ様です。ZuQ9->Nnです。
HoloLensの開発をするうえで、いくつか不便な点があります。
その一つがAir Tap
Holographic Academy - Microsoft Developers
Holograms 101E
ではUnityEngine.VR.WSA.Input GestureRecognizer を利用する方法が紹介されています。
しかし、これは、Unity上で反応せず、
いちいちbuildしてHoloLens Emulatorを起動して確認しなけらばなりません。
HoloLens Emulatorはかなり起動が遅く、確認、デバックが、かなり辛いです。
そこでなるべくUnity上で確認したい欲求がでてきます。
Microsoftが提供してくれているHoloToolkit-Unityには便利なアセットが多く存在します。
UnityにHoloToolkit-Unityをコピーし、プロジェクトの設定を行います。
UnityのProjectから
HoloToolkit > Input > Prefabs
InputManagerのAssetをHierarchyに追加
これでUnityを実行してみると、薄っすら指のアイコンが確認できます。
Shiftキーを押すと反転し色がつくのでわかりやすくなります。
Shiftキーを押したままマウスのクリックを行うと
指のアイコンが動きTapされていることがわかりやすくなります。
調べたところ、この指のアイコンはUnity Editorでしか表示されないようになっていて
HoloLens Emulatorでは表示されません。
またHoloLens EmulatorではShiftキーを押したままマウスのクリックでAir Tapは反応せず
Air Tapは、マウスの右クリックになりますのでご注意ください。
コードでAir Tapをハンドリングするには
Input > Tests > ScriptsのInputHandleCallbackFX.csが参考になります。
using UnityEngine;
namespace HoloToolkit.Unity.InputModule.Tests
{
public class InputHandleCallbackFX : MonoBehaviour, IInputClickHandler
{
[SerializeField] private ParticleSystem particles = null;
private void Start()
{
InputManager.Instance.PushFallbackInputHandler(gameObject);
}
public void OnInputClicked(InputClickedEventData eventData)
{
particles.transform.position = GazeManager.Instance.HitPosition; particles.Emit(60);
}
}
}
こちらは、Gazeの位置でAir Tapすると、パーティクルが表示されるようになっています。
namespace HoloToolkit.Unity.InputModule.Tests
{
public class InputHandleCallbackFX : MonoBehaviour, IInputClickHandler
{
[SerializeField] private ParticleSystem particles = null;
private void Start()
{
InputManager.Instance.PushFallbackInputHandler(gameObject);
}
public void OnInputClicked(InputClickedEventData eventData)
{
particles.transform.position = GazeManager.Instance.HitPosition; particles.Emit(60);
}
}
}
札束のやつも基本これです。HoloToolkit-Unityは、結構頻繁にアップデートをされているので
今後、このやり方ではできなくなるかもしれませんが、
今のところ積極的に使っても大丈夫だと思います。
0 件のコメント:
コメントを投稿