当 GaxePointer 始终打开时获取 GazeProvider.GazeTarget

问题描述

在我们的应用中,我们将注视指针行为设置为 AlwaysOn:

PointerUtils.SetGazePointerBehavior(PointerBehavior.AlwaysOn);

这似乎破坏了 GazeProvider,因为当检测到手时,这个:

CoreServices.InputSystem.GazeProvider.GazeTarget

返回手部射线实际击中的对象,而不是我们注视的对象(可能为空)。

这是我用来获取命中位置的代码:

    if (CoreServices.InputSystem.GazeProvider.GazeTarget?.layer == 31)
    {
        Debug.Log(CoreServices.InputSystem.GazeProvider.HitInfo.point);
    }

但它返回的是手形光标的位置而不是凝视

我也尝试过按 SourceType(Head) 过滤,但问题仍然存在:

    foreach (var source in CoreServices.InputSystem.DetectedInputSources)
    {
        if (source.SourceType == InputSourceType.Head && CoreServices.InputSystem.GazeProvider.GazeTarget?.layer == 31)
        {
            foreach (var p in source.Pointers)
            {
                if (p is IMixedRealityPointer)
                {
                    Debug.Log("HIT");
                }
            } 
        }
    }

那么问题来了: 当 GazePointer 设置为始终可见时,即使检测到手,我们如何获取注视点的位置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...