これちのPost-it

技術ネタをペラペラと

Unity で地図が表示可能な mapbox を触ってみた(初級編)

はじめに

XR+位置情報なゲームを作りたいなーと思い Unity 向けにパッケージが公開されてる mapbox を触ってみました。

公式ドキュメントはこちら

docs.mapbox.com

今回は mapbox SDK を使って地図をUnity 上で出してみることを実現したいと思います。こんな感じです。

f:id:korechi:20190521171841p:plain

環境

Maps SDK for Unity v2.0.0

Unity 2019.1.2f1

使い方

Unity でのセットアップ方法は↑に書いてあるため割愛。

基本的には unitypackage をインポートし Mapbox->Prefabs->Map プレハブを hierarchy 上に配置後 Play すれば地図が表示されます。

f:id:korechi:20190521101650p:plain

この Map プレハブについてる Abstract Map(Script) から地図のいろんなパラメータの調整や、レイヤの追加等が可能です。

ただし↑の公式ドキュメントは SDK バージョンが1.4.0対応っぽく少し古いため、一部 API 仕様が微妙に違うので注意。(2019/5/21現在)

Scene の中心に9マスに分割された地図が表示されています。しかしこのままでは画面をドラッグしてカメラ視点を変えたり、緯度経度を自由に指定する等できません。

SDKMapbox->Examples にあるサンプルを参考にいろんな操作ができることを確かめてみてください。

では実際にいろいろ触ってみようと思います。

その前に

Unity 2019 で SDK をインポートしたら下記のエラーをはいたので、

Library/PackageCache/com.unity.xr.arfoundation@1.0.0-preview.22/Runtime/AR/ARSessionOrigin.cs(3,19): error CS0234: The type or namespace name 'SpatialTracking' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?)

https://github.com/Unity-Technologies/arfoundation-samples/issues/79#issuecomment-450263059

どうもここが参考になりそうとのことで

"com.unity.xr.legacyinputhelpers": "1.0.0"

の設定を manifest.json の一番下に追記することで暫定対応。

理由を詳しく追えていませんが、どうも AR Foundation(ARKit/ARCore のマルチプラットフォーム AR 環境)関連の問題のようなので、Unity のアップデートでいずれ対応されると思います。

AR Foundation についてはこちらが参考になりました。

tsubakit1.hateblo.jp

それでは気を取り直して

特定の緯度経度にプレハブを配置

大崎駅付近 (35.619707, 139.7283495) に適当なプレハブを表示したいと思います。

f:id:korechi:20190521170006p:plain:h400

  1. GENERAL タブ内の Location を 35.619707, 139.7283495
  2. MAP LAYERSData SourceMapbox Streets With Building Ids
  3. POINTS OF INTEREST 内の Add Layer をクリックしてレイヤーを追加
  4. 追加されたレイヤを選択して Prefab を適当なものに設定
  5. Prefab LocationsFind byAddress Or Lat Lon にして Add Location をクリック
  6. Location 035.619707, 139.7283495 を指定
  7. 実行

f:id:korechi:20190521170603p:plain

大崎駅にピンをたたせることができました!

これを応用すればポケストップを表示する、なんてこともできそうですね。

建物を立体的に

3D地図っぽい感じに建物を立体的にのばしてみたいと思います。

f:id:korechi:20190521171402p:plain:h200

  1. MAP LAYERSData SourceMapbox Streets With Building Ids に(さっきのまま)
  2. FEATURESAdd Feature をクリックして Map Features が追加
  3. Data Layerbuilding
  4. 実行

f:id:korechi:20190521171457p:plain

デフォルトの設定でここまで表示できるのは良いですね。

建物の外観は TexturingStyle Type から変更可能です。例えば Style TypeColor にすると

f:id:korechi:20190521171811p:plain:h200

f:id:korechi:20190521171841p:plain

こんな風に変えることができます。

Mapbox の簡単な使い方はおさらいできたので、今回はここまで。次はもう少し詳しくドキュメントを読んで遊んでみたいと思います。