技術戦略部より、tipsやノウハウなど技術的な話題を発信いたします。werdnaの酒井です。ARアプリの作り方、最後の記事です。本記事では「磁気センサーからの角度と次の経路への角度から進むべき方向を指すオブジェクト作成」を目標とします。具体的には下記内容を順に説明していきます。磁気センサーについて今回の行き先表示のために、端末がどの方向を向いているのか?という情報が必要になります。そこで利用するのが「磁気センサー」です。端末の方向」で調べるとジャイロセンサーや加速度センサーでも取得できそうですが、本記事では磁気センサーを利用してみました。)データの内容と取得は下記の通りです。Input.compass.timestamp磁北極と地理的北極という知識がなく...簡単に言えば、磁石が指す北と北極点は異なるもので、磁石が指す北を表すものが「磁北極」そこに補正を加えて北極点を指すようにしたものが「地理的北極」のようです。補正のために地理的北極を取得するためにはInput.location.start()が必要になります。今回はせっかくなので地理的北極であるtrueHeadingを利用します。今回必要な端末が今向いている方向はtrueHeadingで取得できるようでしたのでそのまま利用しています。使うといい感じに動きそうです。行き先表示に良い感じのオブジェクトがデフォルトで存在していなかったのでBlenderを使って矢印を作りました。本題とはそれてしまうので割愛させていただきますが、AssetStoreで販売されているものや、矢印の画像をオブジェクトとして配置する等で代用してください。Blenderでやる場合には、fbkファイルにエクスポートし、Unity側でファイルを開けば自動的に取り込んで表示してくれます。2点間での角度の取得タイトルから感じる数学感で気持ち悪くなってきますが、2点間の角度を取得するときには逆三角関数のアークタンジェントを利用します。longitudeの差を渡すことでradian形式の角度を返してくれます。そのままだと角度として利用できないため、同じくMathfに定義されているRad2Degをかけて角度に直して利用します。後ほど記載するコードの一部ですが下記のように書くことで角度を取得できます。実際に行き先表示を実施します。行き先を指すオブジェクトが必要になるので、矢印オブジェクトを配置します。この時、初期状態で進行方向が前になるように矢印オブジェクトの向きを調整してください。(元々作りたかったものがカメラ画像上に地図や行き先表示があるものだったので、前回のレイアウトから少し変更しています。変更した内容は下記3点です。前回確認用に作成していたGPS情報のTextを無効化)次に適当なGameObjectを作成し、前を向いている矢印オブジェクトが子になるように設定します。(GameObjectの名前をarrowRootに変更しています)Hierarchyウィンドウの矢印オブジェクトを作成したGameObjectにドラッグアンドドロップすることで簡単に親子関係にすることが出来ます。赤枠内のようになっていれば親子関係の設定完了です。※もし矢印オブジェクトを回転させることなく前向きになっていた場合には親オブジェクトを作成しなくても問題ありません。親オブジェクトを作成する意味としては、対象のオブジェクトにデフォルトで回転がかかっていた場合、次の進行方向の角度にデフォルトの角度を加えて計算する必要が出てきてしまうためです。(Unityでは親オブジェクトを移動・回転したときに子オブジェクトも同じく移動・回転します。それを利用して親オブジェクトを回転させます。)オブジェクトの配置は完了ですが回転させるscriptを作成する前に、次の経路情報を受け取れるように前回作成したDirectionControllerを修正します。追加していただければ大丈夫です。更新は5秒に一度、目的地が設定されていない場合は取得しない。origin=開始地点。現在地からの経路を出したいので現在地を渡す。destination=目的地。InputFieldに入力した文字列をエスケープして渡す。経路が多すぎるとUriFormatExceptionで落ちるため上限を設定しておく。}}上の修正が終わったら、回転させるオブジェクトにscriptを反映させていきます。Componentより新規Scriptを作成します。行き先を指すので少し意味合いが違いますが、CompassControllerという名前で作成しています。経路取得コントローラ内で次の地点をセットしているのでコントローラをセットさせる。}}scriptを作成してDirectionControllerを紐づけました。動かしてみると下記のように矢印オブジェクトが動くことを確認できるかと思います。目的地と現在の向きを計算した結果を表示しつつ確認してみると良いかもしれません。実装完了です!まとめ入門者向け記事!として書いたせいかかなり文字数が多くなってしまいました。・利用する端末のセンサーからパラメータの取得やカメラ映像の取得あたりを試してみたく今回のアプリ制作を実施していました。(Hololens1が販売された当初、TwitterでGoogleMapの経路を矢印で表示している動画を見て感動した覚えがあり、それをイメージして作っていました。)参考にした「UnityによるARゲーム開発」ですが、どういった手順を踏んだのか?という部分がしっかりと記載されているので、読みながら追っていくのがとてもやりやすくまとまっていました。Studio側で推奨メソッドを返してくれたのでサクサクと動く形にしつつ進められました。この調子でHololens2発売までにもうすこし色々触ってみようと思います。この記事を読んで、アプリ作成に触れて頂き、Unityを触ってみようかな?と思って頂ければとても嬉しいです。