まくろぐ

Unityスクリプト: 加速度センサー/ジャイロスコープの値を取得する

更新:
作成:

加速度センサ (Input.acceleration)

加速度センサからの入力を取得するには、Input.acceleration プロパティを参照します。 Vector3 型で、X/Y/Z 軸の加速度を -1.0 〜 +1.0 の範囲で取得できます。

Vector3 accel = Input.acceleration;

次の例では、Update() のタイミングで加速度を読み取り、画面上のテキストで X, Y, Z 各軸の加速度を表示しています。

/p/m6hs3dn/img-001_hu67e9ef8ced9f74fd58d0c9e744ad677f_131188_400x0_resize_box_2.png
Sample.cs
using UnityEngine;

public class Sample : MonoBehaviour {
    private Vector3 m_accel;

    void Update() {
        m_accel = Input.acceleration;
    }

    private void OnGUI() {
        var rect = new Rect(30, 30, 500, 50);
        GUI.skin.label.fontSize = 30;
        GUI.Label(rect, string.Format("X={0:F2}, Y={1:F2}, Z={2:F2}",
            m_accel.x, m_accel.y, m_accel.z));
    }
}

ジャイロスコープ (Input.gyro)

ジャイロスコープからの入力を取得するには、Input.gyro プロパティを参照し、Gyroscope オブジェクトを取得します。

Gyroscope gyro = Input.gyro;

Gyroscope の機能を使用するには、enabled プロパティを true に設定しておく必要があります。

Input.gyro.enabled = true;

Gyroscope オブジェクトからは、次のような値を取得できます。

  • Gyroscope.attitude … デバイスの傾き具合 (Quaternion)
  • Gyroscope.rotationRate … デバイスの回転率 (Vector3)

attitude プロパティは、デバイスの傾きを Quaternion で取得できるので、そのままゲームオブジェクトの transform.rotation プロパティに設定してやれば、デバイスの傾きとオブジェクトの傾きを一致させることができます。

次の例では、デバイスの傾き具合と回転率を画面上に表示しています。 また、傾きに応じて、スクリプトをアタッチしたオブジェクトを回転させています。

/p/m6hs3dn/img-002_hudf8473e5063306d3b6b44c610e02c279_477268_400x0_resize_box_2.png
Sample.cs
using UnityEngine;

public class Sample : MonoBehaviour {
    private Gyroscope m_gyro;

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

    void Update() {
        m_gyro = Input.gyro;
        transform.rotation = m_gyro.attitude;
    }

    private void OnGUI() {
        var rect1 = new Rect(30, 30, 600, 50);
        var rect2 = new Rect(30, 60, 600, 50);
        GUI.skin.label.fontSize = 30;
        GUI.Label(rect1, "attitude=" + m_gyro.attitude);
        GUI.Label(rect2, "rotationRate=" + m_gyro.rotationRate);
    }
}
まくろぐ
サイトマップまくへのメッセージ