gpt4 book ai didi

unity3d - 为什么 'air tap' 手势在我的 Unity/MRTK 应用程序中的 HoloLens1 上不起作用?

转载 作者:行者123 更新时间:2023-12-05 02:57:57 26 4
gpt4 key购买 nike

我有一个 Unity 应用,我想将其与 Microsoft 混合现实工具包 (MRTK) 集成。当我将 MRTK(v2.1 或 v2.2)包添加到我的 Unity 项目时,我可以在 Unity 编辑器中模拟“隔空敲击”手势,应用程序会注册点击。但是,当我将应用程序发布到我的 HoloLens1(或在 Unity 中运行全息模拟器)时,“隔空敲击”手势不会记录点击。

统一:2018.4.x

MRTK:v2.1/v2.2

Unity场景设置:

  • 有一个带有独立输入模块的事件系统
  • 有一个角色是主镜头
  • 已导入MRTK
  • 混合现实工具包配置文件设置为 DefaultHoloLens1ConfigurationProfile

当我使用上述设置运行场景时,隔空敲击在 Unity 编辑器中注册(通过按空格键并单击以模拟),但它没有在 HoloLens1 中注册。

我是否遗漏了某些设置?也许另一个输入组件要添加到我的场景中?

最佳答案

要响应来自 MRTK 的点击事件,您需要监听 MRTK pointer events而不是 MRE 可能监听的 Unity 输入事件。 OnPointerClicked 事件是一个值得监听的好事件,它会在手被轻敲、运动 Controller 被点击或您说出“选择”这个词时触发。通常情况下,输入处理程序只会在您将鼠标悬停在对象上时做出响应,因此要全局响应这些输入,您需要注册为全局输入处理程序。

这是一个脚本示例,只要单击指针,它就会打印一些文本:

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;

public class DetectTapExample : MonoBehaviour
{

public void Start()
{
PointerHandler pointerHandler = gameObject.AddComponent<PointerHandler>();
pointerHandler.OnPointerClicked.AddListener((evt) => Debug.Log("Tap Detected " + Time.time));
// Make this a global input handler, otherwise this object will only receive events when it has input focus
CoreServices.InputSystem.RegisterHandler<IMixedRealityPointerHandler>(pointerHandler);
}
}

您可以了解更多关于 Pointers here 的信息和 MRTK Input System here

关于unity3d - 为什么 'air tap' 手势在我的 Unity/MRTK 应用程序中的 HoloLens1 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com