#注意
スマホから取得する方法になります。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