2015-12-06 1 views
0

alors j'essaie de faire une inclinaison de la plate-forme avec les commandes du gyroscope. Quand je charge le jeu, la plateforme est déjà inclinée car mon programme semble créer un couple constant basé sur la position physique de mon téléphone par rapport à l'axe y. Je dois être en mesure de régler l'emplacement de mon téléphone à (0,0,0) ou créer un couple qui peut s'opposer au mouvement constant du téléphone afin que ces contrôles soient plus faciles à gérer. Des idées?Unité: calibrer une plate-forme d'inclinaison contrôlée par gyroscope Android

public class balance : MonoBehaviour { 
    public float torque; 
    public Rigidbody rb; 

    void Start() { 
     rb = GetComponent<Rigidbody>(); 
    } 
    void FixedUpdate() { 
     Input.gyro.enabled = true; 
     rb.transform.Rotate(Input.gyro.attitude.x, 0, Input.gyro.attitude.z); 
    } 
} 

Répondre

0

Je pense que vous devez tourner que par le delta de la rotation de la dernière image et ce cadre (de FixedUpdate). comme ceci:

public class balance : MonoBehaviour { 
    public float torque; 
    public Rigidbody rb; 
    private Vector3 prefFrameRotation; 
    private Vector3 deltaRotation; 

    void Start() { 
     Input.gyro.enabled = true; 
     deltaRotation = Vector3.zero; 
     rb = GetComponent<Rigidbody>(); 
    } 
    void FixedUpdate() 
     deltaRotation = prefFrameRotation - Input.gyro.attitude; 
     //you don't even need to use Time.fixedDeltaTime because 
     //the calculations are per fixedUpdate anyways 
     rb.transform.Rotate(deltaRotation.x, 0, deltaRotation.z); 
     prefFrameRotation = Input.gyro.attitude; 
    } 
}