LoginSignup
5
3

More than 3 years have passed since last update.

【Unity】 角速度(ジャイロ)センサーの使い方

Last updated at Posted at 2020-01-14

注意

スマホから取得する方法になります。PC本体のセンサー情報を取得にはこの方法だと無理です。

UnityリファレンスのURL

リファレンスを読めば分かる人はコチラ
- https://docs.unity3d.com/ja/2019.3/ScriptReference/Gyroscope-rotationRate.html
- https://docs.unity3d.com/ja/2019.3/ScriptReference/Gyroscope-rotationRateUnbiased.html



以降は私の記事から情報を得る人向けです(忘れやすい私でも分かるように書いています)

1. 角速度の取得方法(Part1)

最初にジャイロセンサーを有効化します

// Start is called before the first frame update
void Start()
{
  Input.gyro.enabled = true;
}



有効化後に角速度を取得します - 単位 : Rad/Sec
(念のためロール・ピッチ・ヨー方向が合っているかは実機で確認した方が良いです。)

private void UpdateGyroData()
{
  double pitch = Input.gyro.rotationRate.x;
  double yaw = Input.gyro.rotationRate.y;
  double roll = Input.gyro.rotationRate.z;
}

rotationRateは角速度センサーから取得した生のデータです。
なぜ説明しているのかを理解したい方はPart2を読みましょう。

2. 角速度の取得方法(Part2)

Part2ではrotationRateUnbiasedを説明します。
より正確な値を取得する人向けに使用が推奨されます。
rotationRateで取得すると自動車がドリフトしている時の値が正しくないケースがあります。
ドリフト時の様に誤差が生まれやすい環境で使用する場合に使用が推奨されています。
(ハードウエアがそれらを考慮した設計をされていればrotationRateで取得しても問題ありません)



最初にジャイロセンサーを有効化します

// Start is called before the first frame update
void Start()
{
  Input.gyro.enabled = true;
}



有効化後に角速度を取得します - 単位 : rad/sec

private void UpdateGyroData()
{
  double pitch = Input.gyro.rotationRateUnbiased.x;
  double yaw = Input.gyro.rotationRateUnbiased.y;
  double roll = Input.gyro.rotationRateUnbiased.z;
}

3. Rad/Sec から Deg/Sec に変換する

ラジアンより度の方が一般的なので変換する事が多いと思います。
メモ程度で記載します。参考になる資料は[参考]欄に記載しておきます。

private void UpdateGyroData()
{
  double pitch = (Input.gyro.rotationRate.x * 180) / Mathf.PI;
  double yaw = (Input.gyro.rotationRate.y * 180) / Mathf.PI;
  double roll = (Input.gyro.rotationRate.z * 180) / Mathf.PI;
}



Unityの関数を使用して変換する事も出来ます。
今回はdouble型ですがfloat型の時に使用するといいと思います。

private void UpdateGyroData()
{
  double pitch = Input.gyro.rotationRate.x * Mathf.Rad2Deg;
  double yaw = Input.gyro.rotationRate.y * Mathf.Rad2Deg;
  double roll = Input.gyro.rotationRate.z * Mathf.Rad2Deg;
}


もっといい方法(アドバイス)や感想があったらコメントしてください。
おいしいと思うお店の情報もお待ちしております。

[参考]
Unity専用関数を使用: https://docs.unity3d.com/ja/current/ScriptReference/Mathf.Rad2Deg.html
ラジアンと度の概念 : https://juken-mikata.net/how-to/mathematics/radian.html

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3