【Unity】コンパスを作ってみた

コンパスアプリを作ってみようと思って調べてみると、UnityにCompassインターフェースというもがあったので、今回はそれを使った内容を書いてみました。


環境

Unity2018.3.0f2

Xcode10.1


Compassインターフェース

enabled コンパスを有効または無効にするために使用します。Input.compass.trueHeadingプロパティーに有効な値を含ませたい場合、Input.location.Start()を呼び出してロケーションの更新を有効にする必要があります。
headingAccuracy 度単位の方向読み取りの精度
magneticHeading 磁北極に基づく度単位の進行方向 (読み取り専用)
rawVector マイクロテスラ単位の raw 地磁気データ (読み取り専用)
timestamp 進行方向が最後に更新されたときのタイムスタンプ (1970 以来の秒数)。(読み取り専用)
trueHeading 地理的北極に基づく度単位の進行方向 (読み取り専用)
スクリプトリファレンスから引用

実装

色々変数があるので、とりあえず画面に情報を出すだけのプログラムを書いてみました。

iPhoneに転送した画面がこちらです。端末を傾けると数字が変化していました。正しく動作してそうです!

次にUGUIのTextを使って東西南北と角度を表示してみました。階層はこんな形です。

※角度表示は回転してほしくない為、Rootオブジェクトには含めない

trueHeadingの値を使って、Rootオブジェクトを回転させる処理がこちらです。

端末実行したものがこちらです。

実際に動かしてみると表示がカクついていたので、targetFrameRateを60に設定し、見た目も調整して最終的にはこんな感じにしてみました。


まとめ

既にUnityで提供されているインターフェースがあり、ネイティブコードを書かなくても作ることができました。素材もUGUIのデフォルト素材を使うことで時間短縮もできあっという間にコンパスアプリが作れました!!


参考url