问题描述
在我们的应用中,我们将注视指针行为设置为 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 (将#修改为@)