MRTK 2.4 - 重新连接手部菜单

MRTK 2.4 - Reattach Hand Menu

我使用预制件 HandMenu_Large_WorldLock_On_GrabAndPull 作为手部菜单的基础。如果抓住菜单并将其放在某个地方,我会呆在那里,这种行为对我来说很好。但现在我想走开,再看看我的手,菜单应该重新贴在我的手上。如何设置 HandConstraintPalmUp 来实现?

我试过的:
我读到 here 可以将 SolverHandler 设置为真或调用方法 HandConstraintPalmUp.StartWorldLockReattachCheckCoroutine() 但这实际上并没有将 SolverHandler 设置为真,它只是保持假。如果 运行 通过全息仿真并通过在编辑器中单击将处理程序设置为 true,它可以工作,但不能通过 OnFirstHandDetectedOnHandActivate of HandConstraintPamlUp。文档还说:

当试图将手部约束对象设置为再次开始跟随您的手部时(基于它是否满足激活条件),将 SolverHandler 的 UpdateSolver 设置为是的。

但是求解器将 UpdateSolvers 设置为 true 的标准是什么?我在这里错过了什么?

具有默认设置的菜单:
为什么按钮 BtnClose 上的 OnClick-Event 有效,而我对 OnHandActiavte 的调用却不起作用?

实际上,由于HandConstraintPalmUp组件的Use Gaze Activation复选框默认是关闭的,StartWorldLockReattachCheckCoroutine()方法调用的协程函数WorldLockedReattachCheck()有条件语句会求值useGazeActivation 属性 决定是否执行后面的语句。如果您没有启用 Use Gaze Activation,它永远不会将 UpdateSolver 属性 更新为 true。具体可以参考本class的源码:HandConstraintPalmUp.cs Line 392。要修复它,您可以为项目启用 Use Gaze Activation 或直接在代码中更新 SolverHandler.UpdateSolvers 的值。

此外,OnHandActiavte 事件对我来说总是很好,我无法在我的机器上重现您的问题。你能提供更多相关信息吗?如果您对如何使用它有疑问,可以在 Assets/MRTK/Examples/Experimental/HandMenuLayout/Scenes.

下的 HandMenuLayoutExamples 场景中找到示例