コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

【Unity】「ニコニ立体ちゃんのお天気情報」Android版を公開しました

f:id:baba_s:20150215163332p:plain

f:id:baba_s:20150215163339p:plain

日曜日に時間があったので一度作ってみたかった
天気予報アプリを作成してみました
現在は Google Play で公開しています

Android app on Google Play

参考アプリ

「ユニティちゃんのお天気情報」を参考にさせて頂きました

https://itunes.apple.com/jp/app/yunitichannoo-tian-qi-qing/id874799353?mt=8&uo=4&at=10l8JW&ct=hatenablog

モデル

最近は「ユニティちゃん」や「プロ生ちゃん」、「クエリちゃん」など
いろんな女の子の3Dモデルが公開されていますが、
今回は「ニコニ立体ちゃん」の3Dモデルを使用してみました



カワイイですね!

フォント

せっかくニコニコのキャラクターを使用したので
UIで使用するフォントもニコニコ風のものを使用させて頂いています

ニコニコフォント作ってみた - 無料ダウンロード可

お天気情報

OpenWeatherMap current weather and forecast

「ユニティちゃんのお天気情報」ではこちらを使用して
お天気情報を取得しているようですが
今回は「drk7.jp」様が公開している天気予報の情報を使用しています

気象庁の天気予報情報を XML で配信 - drk7jp

また、Android端末のGPS情報から取得できる緯度と経度の値から
都道府県情報を取得するために下記のAPIも使用させて頂いています

逆ジオコーディングAPI (reverse geo coding)

位置情報の取得

下記のサイト様を参考にさせて頂きました

Unity - Scripting API:
Unityで位置情報を取得 - チラ裏Unity

お天気情報の取得

このような Weatherforecast.cs を作成して
下記のように WWW クラスや XmlSerializer クラスと併用することで
「drk7.jp」様が公開している XML から天気予報の情報を取得できます

using System.Collections;
using System.IO;
using System.Xml.Serialization;
using UnityEngine;

public class WeatherforecastController : MonoBehaviour
{
    private void Awake()
    {
        StartCoroutine( LoadWeatherforecast() );
    }

    private IEnumerator LoadWeatherforecast()
    {
        var www = new WWW( "http://www.drk7.jp/weather/xml/01.xml" );

        while ( !www.isDone )
        {
            yield return null;
        }

        var text    = www.text;
        var xs      = new XmlSerializer( typeof( Weatherforecast ) );
        var sr      = new StringReader( text );
        var obj     = xs.Deserialize( sr ) as Weatherforecast;
        Debug.Log( obj );
    }
}
<weatherforecast>
<title>weather forecast xml</title>
<link>http://www.drk7.jp/weather/xml/01.xml</link>
<description>気象庁の天気予報情報を XML で配信。1日1回 AM 6:00 ごろ更新。</description>
<pubDate>Sat, 14 Feb 2015 12:00:03 +0900</pubDate>
<author>気象庁</author>
<managingEditor>drk7.jp</managingEditor>
<pref id="北海道">
<area id="上川地方">
<geo>
<long>142.8410</long>
<lat>43.6155</lat>
</geo>
<info date="2015/02/15">
<weather>くもり時々雪</weather>
<img>http://www.drk7.jp/MT/images/MTWeather/204.gif</img>
<weather_detail>北西の風 くもり 昼過ぎ から 夕方 雪</weather_detail>
<wave>--</wave>
<temperature unit="摂氏">
<range centigrade="max">-1</range>
<range centigrade="min">-7</range>
</temperature>
<rainfallchance unit="%">
<period hour="00-06">0</period>
<period hour="06-12">20</period>
<period hour="12-18">30</period>
<period hour="18-24">20</period>
</rainfallchance>
</info>
<info date="2015/02/16">
...

あとは Weatherforecast クラスの変数を参照することで
天気や気温、降水確率などを取得できます

MMD

ニコニ立体ちゃんのモデルは .unitypackage で公開されているので
そのまま Unity 使用することも可能ですが
今まで MMD を触ったことがなかったので
いろいろ調べながら MMD でニコニ立体ちゃんを表示してみました

Unity内でMMDモデルを自由に走らせる手軽な方法 - テラシュールブログ
Stereoarts Homepage
Unity3D - MMD4Mecanimで表情を作り込む - Qiita

まとめ

今回作った「ニコニ立体ちゃんのお天気情報」では
その日の現在値の天気しか表示していないので
地域を選べるようにしたり一週間分の天気情報を表示したり、
あとは天気によってニコニ立体ちゃんのモーションを変えるなど
折を見て改善していきたいなと考えてます