天気情報の表示
概要
このサンプルは、地図上の地点の天気を表示します。
詳細
Unityプロジェクトのセットアップ
1. Snapdragon Spaces SDKのインポート
2. QONOQサンプルのインポート
-
以下のUnityパッケージをダウンロードします。
-
ダウンロードしたUnityパッケージをUnityEditorの
Project
タブにドラッグ&ドロップします。 -
サンプルがUnityプロジェクトにインポートされます。
3. 依存パッケージのインポート
Newtonsoft.Jsonのインポート
Window > PackageManager
を開きます。- 左上の
+▼
ボタンから、「Add package from git URL...」を選択します。 - URLの欄に、
com.unity.nuget.newtonsoft-json
を入力して「Add」を選択します。 - Newtonsoft.Jsonが、Unityプロジェクトにインポートされます。
4. シーンのセットアップ
-
UnityEditorの
[Edit] > [Project Settings] > [XR Plug-in Management] > [OpenXR (Androidタブ)]
で[Meta Quest Support]
の歯車マーク
をクリックします。
-
「Force Remove Internet Permission」を無効にします。
WARNING
UnityEditor上でスクリプトのコンパイルがされるたびに、「Force Remove Internet Permission」は、自動で有効化されてしまいます。ビルドする直前にその都度無効化する必要があります。
有効化されてしまっている場合は、Projec Validation
タブにて警告されるため、[Fix]をクリックすることでも、無効化出来ます。
-
Projectの
Assets/Samples/QONOQ/Scenes/Weather/Weather
シーンを選択します。 -
シーンをビルドします。
アプリの使用方法
- 地図上で、天気情報を取得したい地点にポインターを向けます。
- タッチパッドを押すことで、その地点の天気情報の取得が始まります。
アプリが正常に動作しない場合
- インターネット機能の有効化に関するページをご確認ください。
サンプルの仕組み
天気情報の取得
- 天気の取得にはOpen-Meteoを使用しています。 (Weather data by Open-Meteo.com)
- HTTPリクエストを行うことで、天気情報をJSON形式で取得できます。
- シーン上では、以下のような緯度経度情報を含んだURLをHTTPリクエストすることで、その場所の天気情報を取得しています。
https://api.open-meteo.com/v1/forecast?latitude=35.689&longitude=139.692¤t=temperature_2m,weather_code&timezone=Asia%2FTokyo
地図上の座標から緯度経度への変換
事前に使用している日本地図の北東と南西の2点の緯度経度を設定しておくことで、ピンが指す位置の緯度経度を比率から計算しています。
ホストコントローラー(スマートフォン)によるポインターの操作
ポインターの位置について
AR Session Origin > Spaces Simple Interaction > Controller Manager > Host Controller Pointer
オブジェクトからRaycastを行い、地図上の衝突した地点の座標を利用しています。
ポインターによる選択について
- ポインターによる選択には、スマートフォンのタッチパッドを押したかの判定を利用しています。
WeatherInfoManager.cs
内では、以下のようにOnTriggerActionがスマートフォンのタッチパッドを押した際に実行されるように実装されています。
TriggerAction.action.performed += OnTriggerAction;