使用 MRTK 2.4 的自定义控制器和 GrabPointer 不起作用
Custom Controller and GrabPointer with MRTK 2.4 don't work
我的自定义控制器有 3 个指针。
- 射线指针(工作良好)
- 戳指针(工作正常)
- 抓取指针(具有 SpherePointer.cs 组件)不工作
在 MRTK 2.3 中,所有这些都可以正常工作。我没有更改场景中的任何内容并更新到 MRTK 2.4。
在 MRTK 2.4 中,Grab Pointer 不再工作...当将它移动到 nearGrabbable 对象附近时,我无法抓住它,因为它没有被识别为 GrabPointer(黄色的 Debug Ray 不是正在编辑器中绘制)。
但是当我使用铰接式手抓取指针时,它起作用了。所以我复制了预制件,只更改了姿势动作和指针动作,但没有用。使用 SpherePointer 时我错过了什么?
控制器的姿势变化如下:
CoreServices.InputSystem.RaisePoseInputChanged(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction, controllerPose);
然后按这样的按钮:
CoreServices.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction);
CoreServices.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction);
编辑:
Link到自定义输入设备重现Bug:
https://wetransfer.com/downloads/27b3f2b90c18516dc47a35cf645dc25820200728111556/10711a
- 创建一个空的新Unity项目(2018.4.X,但与2019.4.X相同)
- 导入 MRTK 2.4
- 导入我的自定义输入包
- 打开错误场景,发现球体指针不适用于自定义输入设备。
我解决了这个问题:
如图所示,if 语句对我来说总是错误的。我从未将 IsPositionAvailable 分配给 true。
现在在我的控制器中我添加了这样一行:
IsPositionAvailable = myControllerPosition != Vector3.zero;
那一行解决了我的问题。
我的自定义控制器有 3 个指针。
- 射线指针(工作良好)
- 戳指针(工作正常)
- 抓取指针(具有 SpherePointer.cs 组件)不工作
在 MRTK 2.3 中,所有这些都可以正常工作。我没有更改场景中的任何内容并更新到 MRTK 2.4。
在 MRTK 2.4 中,Grab Pointer 不再工作...当将它移动到 nearGrabbable 对象附近时,我无法抓住它,因为它没有被识别为 GrabPointer(黄色的 Debug Ray 不是正在编辑器中绘制)。
但是当我使用铰接式手抓取指针时,它起作用了。所以我复制了预制件,只更改了姿势动作和指针动作,但没有用。使用 SpherePointer 时我错过了什么?
控制器的姿势变化如下:
CoreServices.InputSystem.RaisePoseInputChanged(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction, controllerPose);
然后按这样的按钮:
CoreServices.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction);
CoreServices.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction);
编辑:
Link到自定义输入设备重现Bug: https://wetransfer.com/downloads/27b3f2b90c18516dc47a35cf645dc25820200728111556/10711a
- 创建一个空的新Unity项目(2018.4.X,但与2019.4.X相同)
- 导入 MRTK 2.4
- 导入我的自定义输入包
- 打开错误场景,发现球体指针不适用于自定义输入设备。
我解决了这个问题:
如图所示,if 语句对我来说总是错误的。我从未将 IsPositionAvailable 分配给 true。 现在在我的控制器中我添加了这样一行:
IsPositionAvailable = myControllerPosition != Vector3.zero;
那一行解决了我的问题。