スマホのジャイロでカメラを回転させる方法
Unity+Androidでスマホのジャイロに合わせてカメラを回転させたかったので色々調べてました。
Unityでスマホのジャイロ情報は
Input.gyro.attitude
で取得できます。
これをそのままCameraのtransform.rotationに入れると変な感じになりました。
やりたかったのは横持ちの時の回転なのですが、どうやら縦持ちの回転の様子。
ジャイロ機能とコンパスで見渡し操作【UUJ】
こちらのサイトを参考にQuaternionをかけることで横持ち用に
transform.rotation = Quaternion.Euler(0, 0, -180) * Input.gyro.attitude * Quaternion.Euler(0, 0, 180);
これで横持ち回転になりますが。机に置いたときに正面を向く感じになります。
横に持った時に前を向いたら正面になって欲しい……ので
transform.rotation = Quaternion.Euler(0, 0, -180) * Quaternion.Euler(-90, 0, 0) * Input.gyro.attitude * Quaternion.Euler(0, 0, 180);
こう
これで求めていた回転にできましたー
おいおいリセットかけられるようにしたりとか、起動時の向きを正面にするとかいれますかね。
カメラにアタッチすれば即ジャイロ回転になるコードを置いておきます。
スマホ横もちの時のカメラ回転をジャイロでできるようにするスクリプト。