Unity:校准Android陀螺仪控制的倾斜平台

时间:2015-12-06 05:35:43

标签: c# android unity3d gyroscope

所以我试图用陀螺仪控制器来平台倾斜。当我加载游戏时,平台已经倾斜,因为我的程序似乎根据我的手机相对于y轴的物理位置产生恒定的扭矩。我需要能够将我的手机返回位置设置为(0,0,0)或创建一个可以抵抗手机持续移动的扭矩,以便这些控件更易于管理。有什么想法吗?

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);
    }
}

1 个答案:

答案 0 :(得分:0)

我认为您只需要旋转最后一帧和此帧(FixedUpdate)的旋转增量。像这样:

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;
     }
}