【Unity】ジャイロでスマホの傾き取得

  • 投稿日:
  • by
  • カテゴリ:
放置ブログにたまに投稿してみる。
最近はUnityでスマホアプリを作ったりしてます。

で、デバイスを「どっちに傾けたか」知りたい時どうするのかなと調べてみると
ジャイロセンサーの Input.gyro.attitude を使うとか
加速度センサー Input.acceleration で済ませるとかあるみたいですが
結論としては Input.gyro.rotationRateUnbiased を使うのが良さげでした。

Input.gyro.rotationRateUnbiasedは、XYZ各軸の回転速度がVector3型で返ってきます。
デバイスを奥に倒すとXがマイナス、手前に傾けるとXがプラス、
左に向けるとYがマイナス、右に向けるとYがプラス、
時計周りにするとZがマイナス、反時計回りだとZがプラス、という感じです。
速度なので動かすのをやめると値は0に近づきます。

Input.gyro.attitude はデバイスの姿勢をクォータニオンで返すので、たとえば
デバイスの傾きと床オブジェクトの傾きが連動する玉転がしゲームとかの用途向き。
寝転んだ状態での操作をやろうとするには難しい。

Input.acceleration はシェイクジェスチャーとかの用途向き。
常に重力加速がかかってるからそれを元に傾きを求められなくはないけど
余計な動きが加わると値が荒ぶりそう。