目次
はじめに
この記事はUnreal Engine (UE) Advent Calendar 2022の2部6日目に参加しています。
Unreal Engine (UE) Advent Calendar 2022
今回はWebAPIを活用して現実世界の天候とゲーム内の天候を同期する方法を解説します。
この記事を執筆するにあたり以下のAPIとアセットを使用しました。
解説
1.APIを使用する無料プラグインの導入
以下のプラグインを導入します。
使用したいエンジンのバージョンを選択してインストールします。
プロジェクトを開いてプラグインからVaRestを有効化します。
これで利用できるようになりました。
2.天気データの取得方法
現在の天気をJsonで返すAPIがあるのでこれを利用します。
試しに東京の天気にアクセスするには以下のサイトを開きます。
https://weather.tsukumijima.net/api/forecast/city/130010
今日の天気や明日の天気を返してくれます。
任意の都市への検索は以下のURLから取得できます。
東京(130010)なので末尾に番号を付けています。
都市コードのサイトは以下の通りです。
3.UEからデータの取得
どこでもいいですが今回はレベルブループリントに記述していきます。
先ほどのURLを入力します。
CallBackに内容が返ってくるので
"forecasts"の初めのデータ(今日の天候)を取得します。
返ってくる内容は以下
デバッグするためにも日付と天候を出力してみます。
実行してみましょう。
こんな感じに内容が取得できていることがわかります。
4.実際に天気を変えてみる
0から作るのは大変なので天気アセットのUltraDynamicSkyで実装してみました。
ざっくり実装例を解説します。
レベルに以下のBPをドラッグアンドドロップします。
天気の文字情報から処理を分岐します。
代表的な内容を作ってみたので参考にしてみてください。
~のち~は暫定的に午前午後で処理を分岐しました。
時々~はランダムで返すようにします。
実行して天気が変化していく様子を見てみましょう。
実装例をBluePrintUEで共有しておきます。
追記
お天気APIがアクセスできなくなってしまったので、臨時で気象庁のJsonデータから取得するバージョンも紹介します。
東京の天気は以下のURLからアクセスできます。
https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json
文字だと余計な文が入ってしまうので天気コードで返します。
最後に
今回はAPIを使用することでゲーム内と現実の天候を同期してみました。
ほかにも現在地を取得したり、任意のAPIを作成して文字列を可変取得したり応用が利くので活用していきましょう。
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。