0

我的自定义控制器有 3 个指针。

  1. 光线指针(工作良好)
  2. 戳指针(工作良好)
  3. 抓取指针(具有 SpherePointer.cs 组件)不起作用

使用 MRTK 2.3,所有这些都可以正常工作。我没有更改场景中的任何内容并更新到 MRTK 2.4。

在 MRTK 2.4 中,抓取指针不再工作......当将它移动到 nearGrabbable 对象附近时,我无法抓取它,因为它没有被识别为 GrabPointer(黄色的调试射线不在编辑器中绘制)。

但是当我使用铰接式手抓指针时,它可以工作。所以我复制了预制件,只更改了姿势动作和指针动作,但它不起作用。使用 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);

编辑:

用于重现 Bug 的自定义输入设备链接: https ://wetransfer.com/downloads/27b3f2b90c18516dc47a35cf645dc25820200728111556/10711a

  1. 创建一个空的新 Unity 项目(2018.4.X,但与 2019.4.X 相同)
  2. 导入 MRTK 2.4
  3. 导入我的自定义输入包
  4. 打开 Bug 场景,发现球体指针不适用于自定义输入设备。
4

1 回答 1

0

我解决了这个问题: SpherePointer.cs 比较 2.3 与 2.4

正如你在图片中看到的,if 语句对我来说总是错误的。我从未将 IsPositionAvailable 分配为 true。现在在我的控制器中,我添加了这样一行:

            IsPositionAvailable = myControllerPosition != Vector3.zero; 

那条线解决了我的问题。

于 2020-07-29T09:50:41.917 回答