问题描述
我使用预制HandMenu_Large_WorldLock_On_GrabAndPull作为手动菜单的基础。如果抓住菜单并将其放在某处,我会呆在那里,这种行为对我来说很好。但是现在我想走开,再次看我的手,菜单应该重新贴在我的手上。如何设置HandConstraintPalmUp
来实现?
我尝试过的事情:
我读过here,我可以将SolverHandler
设置为true或调用方法HandConstraintPalmUp.StartWorldLockReattachCheckCoroutine()
,但这实际上不是将SolverHandler
设置为true,只是保持为假。如果通过全息仿真运行它并通过在编辑器中单击将处理程序设置为true,则它可以工作,但不能通过OnFirstHandDetected
的{{1}}或OnHandActivate
来运行。文档还说:
当尝试设置手约束对象以再次开始跟随您的手时(基于其是否满足激活条件),请将SolverHandler的UpdateSolver设置为true。 em>
但是,求解器将HandConstraintPamlUp
设置为true的标准是什么?我在这里想念什么?
默认设置菜单:
例如,为什么按钮UpdateSolvers
上的OnClick
事件有效,而我对BtnClose
的呼叫无效?
解决方法
实际上,由于Use Gaze Activation
组件的HandConstraintPalmUp
复选框默认为禁用,并且WorldLockedReattachCheck()
方法调用的协程函数StartWorldLockReattachCheckCoroutine()
具有条件语句,将评估{ {1}}属性决定是否执行以下语句。如果未启用useGazeActivation
,它将永远不会将Use Gaze Activation
属性更新为true。您可以参考此类的源代码以获取详细信息:HandConstraintPalmUp.cs Line 392。要对其进行修复,可以为项目启用UpdateSolver
或直接在代码中更新Use Gaze Activation
的值。
此外,SolverHandler.UpdateSolvers
事件对我而言一直很好,我无法在计算机上重现您的问题。您能否提供有关它的更多信息?而且,如果您对如何使用它有疑问,可以在OnHandActiavte
场景的Assets / MRTK / Examples / Experimental / HandMenuLayout / Scenes下找到示例。