我正在尝试编辑默认的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();
如果有人可以帮助我,我会很感激。
感谢。
答案 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;
}