停止并恢复Oculus运动

时间:2014-05-17 20:31:13

标签: c# unity3d oculus

我正在尝试编辑默认的oculus相机脚本,以便在一段时间内停止响应跟踪传感器,然后从相机指向跟踪传感器后停止的位置恢复正常移动。

我能够阻止相机响应跟踪传感器,但现在当它恢复工作时,如果传感器未停用,它会“捕捉”到相机的位置。但是,我希望它能够“无缝地”恢复跟踪。所以我想在此期间我还必须停止更新某些变量。

到目前为止,这是我的代码,它位于函数SetCameraOrientation中的OVRCamera脚本中:

if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f)
{
    camera.transform.rotation = lastRotation;
}
else
{
    camera.transform.rotation = q;
    lastRotation = q;
}

这是我的新变量的变量声明:

private Quaternion          lastRotation        = new Quaternion();

如果有人可以帮助我,我会很感激。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您想从中断的位置继续追踪,那么当您恢复时,您需要记录当前方向与lastRotation之间的增量,以便您可以应用此后的增量反转...

我不知道Unity四元数的确切语法,但你想要这样的东西:

if (Time.realtimeSinceStartup >= 11f && Time.realtimeSinceStartup <= 17f)
{
    camera.transform.rotation = lastRotation;
    deltaRotation = q * lastRotation.inverse();
}
else
{
    lastRotation = q * deltaRotation.inverse();
    camera.transform.rotation = lastRotation;
}