ChickenHead

のんびりUnityでゲーム等を作ります。

iPhoneのUnityRemote4でジャイロ

昨晩ハコスコをぽちったので昼にジャイロを触っていた所、

UnityRemote4でのジャイロ取得につまずきました。

実機ビルドであれば下記のコードで問題無いのですが、

UnityRemote4だとジャイロが取得できません。

void Update(){

    transform.localRotation = Input.gyro.attitude;

}

UnityRemote4でジャイロを取得する為には下記のコードを追加する必要がある様です。

void Awake(){
    Input.gyro.enabled = true;
}

これでUnityRemote4でもInput.gyroが取得出来るはずです。

実際にジャイロを使う為にはiPhoneの右手座標系を、
Unityの左手座標系に変更する必要があります。
諸々書いたのが下記のコードです。

public class DeviceGyro : MonoBehaviour {

    void Awake(){
        Input.gyro.enabled = true;
    }

    void Update(){
        Quaternion gyro = Input.gyro.attitude;
        float y = gyro.y;
        gyro.y = gyro.z;
        gyro.z = y;

        gyro.x *= -1.0f;
        gyro.y *= -1.0f;
        gyro.z *= -1.0f;
        transform.localRotation = gyro;
    }
}

本来Quotanionのxyzをよくわからず直接変更するべきではありませんが、
正しい挙動をしている様なのでこんな感じに。

後は移動量さえ取れれば!という所で悩んでます。