Utilizando el giroscopio Android en Unity3d, ¿cómo puedo configurar la rotación inicial de la cámara con la rotación inicial del dispositivo móvil?

Quiero usar el giroscopio Android para realizar el seguimiento de la cabeza en el controlador de primera persona estándar de Unity3d. He creado una secuencia de comandos corta que gira tanto el nodo padre como el nodo secundario de cámara del Controlador de primera persona. El guión se adjunta a la cámara.

Este script funciona muy bien, gira la vista en primera persona basada en los movimientos de mi dispositivo móvil. Sin embargo, sólo funciona cuando mantengo mi teléfono en una posición de futuro cuando inicio mi aplicación. Si mi teléfono se encuentra sobre la mesa y empiezo mi aplicación, tanto la cámara como las rotaciones del giroscopio están apagadas.

Quisiera que mi escritura respetara la rotación inicial del dispositivo. Cuando inicio mi aplicación y mi dispositivo tiene la pantalla hacia arriba, la cámara debe inicialmente también buscar. ¿Cómo puedo modificar mi script para establecer la rotación de la cámara a la rotación inicial del dispositivo móvil?

using UnityEngine; using System.Collections; // Activate head tracking using the gyroscope public class HeadTracking : MonoBehaviour { public GameObject player; // First Person Controller parent node public GameObject head; // First Person Controller camera // Use this for initialization void Start () { // Activate the gyroscope Input.gyro.enabled = true; } // Update is called once per frame void Update () { // Rotate the player and head using the gyroscope rotation rate player.transform.Rotate (0, -Input.gyro.rotationRateUnbiased.y, 0); head.transform.Rotate (-Input.gyro.rotationRateUnbiased.x, 0, Input.gyro.rotationRateUnbiased.z); } } 

Simplemente guarde la orientación inicial en dos variables, su código se convertirá en:

 using UnityEngine; using System.Collections; // Activate head tracking using the gyroscope public class HeadTracking : MonoBehaviour { public GameObject player; // First Person Controller parent node public GameObject head; // First Person Controller camera // The initials orientation private int initialOrientationX; private int initialOrientationY; private int initialOrientationZ; // Use this for initialization void Start () { // Activate the gyroscope Input.gyro.enabled = true; // Save the firsts values initialOrientationX = Input.gyro.rotationRateUnbiased.x; initialOrientationY = Input.gyro.rotationRateUnbiased.y; initialOrientationZ = -Input.gyro.rotationRateUnbiased.z; } // Update is called once per frame void Update () { // Rotate the player and head using the gyroscope rotation rate player.transform.Rotate (0, initialOrientationY -Input.gyro.rotationRateUnbiased.y, 0); head.transform.Rotate (initialOrientationX -Input.gyro.rotationRateUnbiased.x, 0, initialOrientationZ + Input.gyro.rotationRateUnbiased.z); } } 
  • Consola para programadores de Android: una huella dactilar errónea tras la creación de la versión con Android Studio
  • Uso de SDK de cartón en Unity 5 - ¿sin eventos táctiles?
  • Integración de Unity con Eclipse - ¿Cómo seguir las instrucciones del tutorial "oficial"?
  • ¿Cómo habilitar la opción multi-dex para Android en Unity3D?
  • No encontrar android sdk (Unity)
  • Integración de AdMob a través de Google Play Services con Unity 3D
  • Ant jar error: Execute failed: java.io.IOException: No se puede ejecutar el programa ... $ {aapt} ": error = 2, No hay tal archivo o directorio
  • Obtener el ID de publicidad de Google y limitar la publicidad
  • Google App invita a Unity3D Plugin Json File Location
  • No se puede cambiar FOV de la cámara de la tarjeta de google
  • Unity Camera Patch
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.