如何识别C#中的HoloLens手势?

时间:2019-12-02 12:42:33

标签: c# hololens mrtk hololens-emulator

因此,最近几天,我在Internet上搜索了如何识别C#/ Unity中的HoloLens手势(例如普通的Tap手势)。

例如,我尝试使用GestureRecognizer,但它似乎已过时,因此无法正常工作。

我通过在Unity(Mixed Reality Toolkit)中进行仿真并按住'Space'进行测试,以便看到手并单击鼠标左键。

那样,我可以像使用HoloLens那样与对象进行交互,但是我无法使GestureRecognizer正常工作。

任何代码段都将有所帮助。如果识别出单击或双击,我只是尝试登录(或稍后调用方法)。

1 个答案:

答案 0 :(得分:0)

我认为这里有一些作品。 首先,Mixed Reality Toolkit的模拟手不会通过常规的GestureRecognizer发送事件,这可以解释为什么您在那里看不到事件。它们确实通过MRTK的输入系统发送输入和手势事件。您可以通过以下方式收听这些事件:

public class TapListener : MonoBehaviour, IMixedRealityGestureHandler
{
    [SerializeField]
    private MixedRealityInputAction selectAction; // You'll need to set this in the Inspector to Select

    private void OnEnable()
    {
        CoreServices.InputSystem?.RegisterHandler<IMixedRealityGestureHandler>(this);
    }

    private void OnDisable()
    {
        CoreService.InputSystem?.UnregisterHandler<IMixedRealityGestureHandler>(this);
    }

    public void OnGestureCompleted(InputEventData eventData)
    {
        if (eventData.MixedRealityInputAction == selectAction)
        {
            Debug.Log("Tap!");
        }
    }

    public void OnGestureStarted(InputEventData eventData) { }
    public void OnGestureUpdated(InputEventData eventData) { }
    public void OnGestureCanceled(InputEventData eventData) { }
}

第二,MRTK当前不支持双击,但是如果您可以在存储库中提出功能请求以进行记录,那就太好了。