読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

Unity : モバイル端末のコンパスを使うときに気をつけること

Unity Tips

Android, iOS 端末では、端末についているコンパスを使うことができます。

ただ、マニュアルを見てると値がいろいろあって、ナンノコッチャ結局どれ使えばいいの、って状態になったので、少し調べてみました。

http://docs.unity3d.com/ja/current/ScriptReference/Compass.html

magneticHeadingとtrueHeading

マニュアルでは

magneticHeading
磁北極に基づく度単位の進行方向
trueHeading
地理的北極に基づく度単位の進行方向

と説明されています。
これはそれぞれ

magneticHeadingが地球の磁場が指している北、 trueHeadingが実際に北極のほうを指している真北

を指しているようです。

なぜ値が二つあるのか

国土地理院のサイトによると、

方位磁針のN極は概ね北を指しますが,厳密には北を指していません. つまり,地図上の北(真北)と方位磁針の北(磁北)は微妙にずれています. この真北と磁北のなす角度を偏角といいます.偏角は時間と場所によって異なります.

と、あります。

私が真北だと信じていた方位磁石は、実はちょっとずれていたのです。トホホ

trueHeading は偏角を補正した値だと思われます。

trueHeading の値を取得するには、Input.location.Start() を呼び出さなければなりません。
ロケーション情報を有効にすることで、偏角を補正していると推測できます。

ということで、Unityで方位磁石を作りたい時は、 trueHeadingの値を使用すれば真北を指せます。
実際の方位磁石をエミュレートしたい場合は magneticHeading を使うのもいいでしょう。

public class CompassSensor : MonoBehaviour {

    [SerializeField]
    Transform device;

    void Start () {
        Input.compass.enabled = true;
        Input.location.Start ();

        Debug.Log (string.Format("<b>精度</b>:{0}", Input.compass.headingAccuracy));
        Debug.Log (string.Format("<b>タイムスタンプ</b>:{0}", Input.compass.timestamp));

    }
    
    void Update () {
        Debug.Log (
            string.Format ("magneticHeading : {0}, rawVector : {1}, trueHeading : {2}",
                Input.compass.magneticHeading,
                Input.compass.rawVector,
                Input.compass.trueHeading
            )
        );

        // Transformの向きを真北にする
        device.rotation = Quaternion.Euler(new Vector3 (0, Input.compass.magneticHeading, 0));
    }
} 

rawVector

この値は地球の地磁気のベクトルの生データです。
ぶっちゃけ、この値単体で使うことはないので、無視してもいいでしょう。
ただし、姿勢制御などで使ったりするようです。

ちなみにUnity Remoteではコンパスの値を取得できないみたいです。アプリを書き込めばできました。
端末によってはできるかも。

・参考
http://docs.unity3d.com/ja/current/ScriptReference/Input-compass.html http://docs.unity3d.com/ja/current/ScriptReference/Compass.html http://vldb.gsi.go.jp/sokuchi/geomag/menu_01/

Amazon.co.jpアソシエイト