【Unity】Mapbox Maps SDK for Unityで3D地形マップを召喚する
はじめに
今回は、Mapbox Maps SDK for Unityというパッケージを使って、Unity上に3D地形マップを召喚してみます。 Mapboxは、さまざまなプラットフォームで利用できるマップAPIです。Google Mapsの有料化に伴って、近年勢いを増しているナウなマップAPIです。
そんなMapboxですが、なんとUnityにも対応しています。これは試してみないと!と思いました。
検証環境
- 機種: MacBook Air(m1)
- OS: MacOS Monterey(12.3.1)
- メモリ: 8GB
- Unity: 2021.2.16f1(SILICON)
- mapbox-unity-sdk: v2.1.1
事前準備
パッケージをインポートする
ダウンロードしたパッケージのファイルをダブルクリックして開きます。
と、このままインポートしたいところですが、エラーになります!
エラー
Assets/GoogleARCore/SDK/InstantPreview/Scripts/InstantPreviewManager.cs(32,23): error CS0234: The type or namespace name 'SpatialTracking' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?) Assets/GoogleARCore/SDK/Scripts/ARCoreBackgroundRenderer.cs(43,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?) Assets/UnityARInterface/ARRemote/Scripts/ARRemoteEditorInterface.cs(40,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?) Assets/UnityARInterface/Scripts/ARKitInterface.cs(26,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?) Assets/UnityARInterface/Scripts/ARCoreInterface.cs(51,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?)
なんかARうんぬんのエラーが。。。
解決方法
パッケージをインポートするときに、ARっぽいモジュールを全て無効にします。
MapboxでARしたかった方すみません。根本的な解決方法はまた調査します。。
セットアップ
インポート完了後、セットアップ画面が立ち上がります。 Mapboxのアクセストークンを入力欄に入れてSubmitをクリックしましょう。
設定が終わったらセットアップ画面は閉じてOKです。
普通のマップを召喚する
シーンは、元からあるScenes/SampleScene
を使います。
最初にMapbox/Prefabs/Map
をシーンにドラッグして、プレハブのインスタンスを生成しましょう。
設定
マップの各種設定をしていきます。
General > Location
緯度経度を設定します。フォーマットは緯度,経度
です。ここでは、長崎駅の32.750297,129.870348
にしました。
General >Zoom
ズームの度数です。ここでは、13
にしました。
General >Extent Options, West, North, East, South
マップの広さです。ここでは、Extent OptionsをデフォルトのRange Around Center
、東西南北それぞれを5
にしました。
Image > Data Source
マップの見た目を変えられます。ここでは、Mapbox Satellite
にしました。
現状のシーンを確認してみると、こんな感じになってます。
3D地形マップを召喚する
設定
ここから地形を描画するように設定していきます。
Terrain > Elevation Layer Type
Terrain With Elevation
に設定します。他にもLow Polyバージョン等も設定できます。
Terrain > Exggeration Factor
地形の標高の縮尺です。1
に設定しました。
Terrain > Others > Sample Factor
サンプル数です。大きくする程、精度が高くなります。ここでは、120
に設定しました。
下の画像のように、実際の地形を反映した3D地図を表示できました。
コライダーで当たり判定も追加できる
Terrain > Add Collider
でマップにコライダーを追加できます。
こんな感じで、ボールが当たっているのがわかると思います。
おわりに
今回は、MapboxのUnity SDKを使って3D地形マップを召喚してみました。
コライダーも使えることから、かなり色々な応用ができると思います。 是非ゲーム開発などにご活用ください。