You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MRTK中实现类似HPTK的触摸事件监听功能?

在MRTK中实现触摸事件监听(对应HPTK的触摸逻辑)

要在MRTK中实现和你之前HPTK里一致的首次触摸、持续触摸、触摸离开检测,需要依赖MRTK的触摸输入系统和对应组件,步骤如下:

前置准备

给需要检测触摸的对象添加两个核心组件:

  • 碰撞体组件(比如BoxCollider、SphereCollider):确保碰撞体覆盖对象的可触摸区域,不要勾选"Is Trigger"
  • NearInteractionTouchable组件:在组件的"Touchable Collider"字段中绑定刚才添加的碰撞体,可根据需求调整"Touchable Distance"(触摸检测的有效距离)

编写触摸监听脚本

实现IMixedRealityTouchHandler接口,即可监听MRTK的触摸事件,对应你原来的三个回调:

  • OnTouchStarted → 对应HPTK的onFirstTouch(首次触摸时触发)
  • OnTouchUpdated → 对应HPTK的onTouch(触摸持续过程中每帧触发)
  • OnTouchCompleted → 对应HPTK的onLastUntouch(触摸完全离开时触发)

完整脚本示例:

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

public class MRTKTouchHandler : MonoBehaviour, IMixedRealityTouchHandler
{
    // 首次触摸触发
    public void OnTouchStarted(HandTrackingInputEventData eventData)
    {
        DoThisOnFirstTouch();
    }

    // 持续触摸时每帧触发
    public void OnTouchUpdated(HandTrackingInputEventData eventData)
    {
        MyCallback();
    }

    // 触摸离开时触发
    public void OnTouchCompleted(HandTrackingInputEventData eventData)
    {
        DoThisOnLastUntouch();
    }

    // 替换为你的业务逻辑
    private void DoThisOnFirstTouch()
    {
        Debug.Log("对象被首次触摸");
        // 你的首次触摸处理代码
    }

    private void MyCallback()
    {
        Debug.Log("持续触摸中");
        // 你的持续触摸处理代码
    }

    private void DoThisOnLastUntouch()
    {
        Debug.Log("触摸已离开");
        // 你的触摸离开处理代码
    }
}

注意事项

  • 确保项目已正确配置MRTK输入系统:在Project Settings > Input System中启用MRTK的输入模块,且在MRTK配置文件中开启了手部/手柄触摸支持
  • 如果使用手柄触摸,需确保手柄硬件支持触摸输入,且MRTK已识别对应控制器
  • NearInteractionTouchable的"Touchable Distance"参数需根据对象实际大小调整,避免检测范围过宽或过窄

内容的提问来源于stack exchange,提问作者Aliza Rind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:23:29