Cómo habilitar la cámara de giroscopio en la orientación actual del dispositivo

Me gustaría habilitar el evento onButtonClick de cámara controlada por giroscopio, pero quiero que comience en la posición actual de la cámara. Actualmente, cuando el giroscopio se habilita, mueve la cámara a una nueva posición (probablemente la rotación actual del giroscopio del dispositivo) en lugar de dejarla donde está y girar desde ese punto.

Espero que tenga sentido, pero básicamente no quiero que el usuario note ningún cambio en lo que está viendo en el juego (es decir, la cámara controlada por giroscopio, pero no ese usuario notaría ese cambio). Aquí está el código que estoy usando:

void Update () 
{
    Quaternion attitudeFix = new Quaternion (-gyro.attitude.x, -gyro.attitude.z, -gyro.attitude.y, gyro.attitude.w);
    Quaternion offsetRotation =  initialGyroRotation * attitudeFix;
    rotation = initialRotation * offsetRotation;
    transform.rotation = rotation;
}

public void EnableGyro() 
{
    initialGyroRotation = Input.gyro.attitude;
    initialRotation = transform.rotation;

    Debug.Log("initialRotation: " + initialRotation.ToString());
    Debug.Log("transform.rotation: " + transform.rotation.ToString());
    Debug.Log("initialGyroRotation: " + initialGyroRotation.ToString());
}

** **

EDITAR: Aquí hay una pantalla de exactamente cómo quiero que se vea la vista mientras el usuario sostiene su dispositivo frente a su cara (retrato) Y hacia el norte. Independientemente de la orientación del dispositivo cuando se inicia la aplicación, así es como debe verse cuando se dirige hacia el norte con el teléfono en orientación vertical (nuevamente cuando el usuario mira a través del teléfono).

EDITAR 2: Las pruebas se estaban volviendo confusas, así que puse el código exactamente como sugiere su solución. Todavía hay un pequeño problema, pero parece que este script está muy cerca. El problema principal es que la pantalla no se parece a la imagen anterior cuando ejecuto cada prueba, iniciando la aplicación con el dispositivo en ángulos extraños. Realmente no debería importar el ángulo del dispositivo cuando se inicia la aplicación, debe parecerse a la pantalla anterior cuando se apunta hacia el norte y el retrato.

Necesito hacer más pruebas, y lo haré con un proyecto nuevo / limpio.

Respuestas a la pregunta(1)

Su respuesta a la pregunta