代官山らへんで働くengineerのUnityブログ

サーバサイドやってきたエンジニアがUnityとか触って遊ぶだけのブログ

【Unity】Quaternionをヨー、ピッチ、ロールに変換する【ジャイロ】

ジャイロで受け取ったQuaternionからヨー、ピッチ、ロールへの変換式です
Unityに限らず意外と使うところあると思うんですけど、あんまりネット探しても載ってないんですよね
毎度計算式忘れるので自分への備忘録の意味も込めて

void Start () {
    //ジャイロフラグをオン
    if (SystemInfo.supportsGyroscope) {
         Input.gyro.enabled = true;
    }
}

void Update () {
    Quaternion gyro = Input.gyro.attitude;
    float yaw   =  Mathf.Atan2(2 * gyro.x * gyro.y + 2 * gyro.w * gyro.z, gyro.w * gyro.w + gyro.x * gyro.x - gyro.y * gyro.y - gyro.z * gyro.z);
    float pitch = Mathf.Asin (2 * gyro.w * gyro.y - 2 * gyro.x * gyro.z);
    float roll = Mathf.Atan2 (2 * gyro.y * gyro.z + 2 * gyro.w * gyro.x, -gyro.w * gyro.w + gyro.x * gyro.x + gyro.y * gyro.y - gyro.z * gyro.z);
}


Unityの回転は鬼門だと思う