UnityでGoogleMapを使ってみる
ポケモンGOのような実際の地図情報を使ったゲームをUnityで開発するにはGoogle Maps Platformゲームサービスを用いれば良い。この記事では特に、Maps SDK for Unityを導入し、座標の情報からUnityのシーンにGoogle Mapから提供される構造物の情報をゲームオブジェクトとして表示するまでの流れをまとめる。
Google Maps Platformゲームサービス
公式ドキュメントを引用すると、
Google Maps Platform ゲームサービスは、世界のさまざまなシーンを舞台にしたゲームを作成するための開発プラットフォーム
である。
Google Maps Platfprm は以下の二つで構成される。
- Maps SDK for Unity:GoogleMapが提供する構造物や地理の情報をUnityゲームオブジェクトに変換する
- Playable Locations API:ゲームオブジェクトの配置など、ゲームで使用するロケーション候補の提供
今回はMaps SDK for Unityにフォーカスする。対応するUnityバージョンは2018.4以上であり、この記事では2019.4を用いてテストしている。
APIの導入方法
Google Maps Platformを利用するにはGoogle Cloudに加入する必要がある。Google Cloudは90日間無料。その期間中は300ドルのクレジットをお試しとして使える。90日過ぎるか、クレジットを使い切るとトライアル期間は終了で、有料アカウントにアップグレードする必要がある。有料アカウントでは使用した分の料金を月々払う必要があるが、GoogleMapPlatformに関しては月200ドルまでは無料で使うことができるらしい。Maps SDK for Unityで使うのはSchematicTileAPIであるが、これは1アクセス0.01ドルなので20000アクセスまでは無料で使えるということになるだろう(2020年12月)。
Google Cloud
Google Cloud(https://cloud.google.com/)にログインする。左のURLに行くと、以下の図のような画面になるが、ここから「コンソール」を選択すると個人のページに遷移する。初めてGoogle Cloudを使う場合は、手順に従って住所とクレジットカード情報などを入力すればよい。
デフォルトではMyFirstProjectというプロジェクトが設定されている。APIを追加したいプロジェクトを選択したり、新規で作成する。
次にAPIの設定をする。それにはGoogle Cloud Platformの左のメニューからでAPIとサービスを選択する。
認証情報の作成
まず初めにAPIをキーを作成する。公開データに対しての匿名アクセスはAPIキーがあればできる。左上の三本線からナビゲーションバーを開き、そこからAPIとサービスを選択する。認証情報を選択し一番上の認証情報を作成を選択、必要に応じてオプションを選び作成するとAPIキーが発行される。
APIの追加
プロジェクトで使用しているAPIの一覧はAPIとサービスの画面から確認することができる。APIを追加するときは、APIとサービスの画面からAPIとサービスの有効化を選択する。
APIの一覧から使用したいAPIを選択して、有効化する。特にMaps SDKを使うためにはSemantic Tile APIを有効化する必要がある。
APIの使用料に関しては各APIで設定されており、各APIのページから確認することができる。例えば、Semantic Tile APIの場合は以下のようになっている。
UnityにMaps SDKを導入する
UnityのプロジェクトにMaps SDKを導入する。
http://www.gstatic.com/mapsunitysdk/maps_sdk_for_unity_2019.zip
からバージョン2019向けのMaps SDKをダウンロードする。この中にUnityPackageが入っているのでカスタムアセットのImportからこれをプロジェクトに導入する。
地形や構造物のオブジェクトは、それをMaps Service
コンポーネントを持つゲームオブジェクトの子に作成されていく。そこでまず空Objectを作成して(ここではMapBaseと名付ける)、コンポーネントにMapsServiceを追加する。このコンポーネントのAPI Key Fieldに先ほど作成したAPIキーを入力する。
MapsService基本事項は以下を参考にした。
自由の女神を表示する
動作確認のために自由の女神をシーンに表示する。MapBaseオブジェクトにGoogleが用意したBasicExampleコンポーネントを追加する。このコンポーネントのLatingフィールドに座標の情報を入れるとその場所を中心にしてMapが表示される。この例では自由の女神が表示される。
このフィールドには 緯度、経度 の順に数字を入力。北緯、東経が正の値をとる。
[補足] GoogleMapから座標を取得する方法
GoogleマップのURLは地図の中心の座標とズームレベルの情報をからなっている。実際にURLは以下のような構成になっている。
google.com/maps/@xx.xxxxxxx,yy.yyyyyyy,zz
xx.xxxxxxx
は緯度、yy.yyyyyyy
は経度、zz
はズームレベルを表す。このようにしてGoogle Mapで表示されている地図の座標の情報などを得ることができる。