強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2011年06月30日

[][]GTMF 2011でUnityの講演

Game Tools & Middleware Forum 2011で「Unity で始める不幸にならないためのゲームエンジンとのつきあい方入門」という講演がありました。

Game Tools & Middleware Forum 2011

http://www.info-event.jp/gtmf2011/


スライドはこちら。

関連情報

4Gamer.net ― [GTMF 2011]不幸なゲームエンジン導入はなぜ起こる? ゲーム開発の新ステージに向けて開発者に要求されること(ミドルウェア/開発ツール)

http://www.4gamer.net/games/032/G003263/20110630096/

こちらの記事には講演者ご本人から補足有り。

[][]iPhoneの位置情報を取得する方法

プログラム(JavaScript)はこの様に書きます。

private var locStatus : String = "";
private var locInfo : String = "";

function Start () {
	iPhoneSettings.StartLocationServiceUpdates();
}

function Update () {
	switch (iPhoneSettings.locationServiceStatus) {
		case LocationServiceStatus.Stopped:
			locStatus = "Stopped";
			break;
		case LocationServiceStatus.Initializing:
			locStatus = "Initializing";
			break;
		case LocationServiceStatus.Running:
			locStatus = "Running";
			
			locInfo = "Location: " + iPhoneInput.lastLocation.latitude + " " +
				iPhoneInput.lastLocation.longitude + " " +
				iPhoneInput.lastLocation.altitude + " " +
				iPhoneInput.lastLocation.horizontalAccuracy + " " +
				iPhoneInput.lastLocation.timestamp;
			
			if (Input.touchCount >= 1) {
				Application.OpenURL ("http://maps.google.com/maps?ll="+
					iPhoneInput.lastLocation.latitude+","+iPhoneInput.lastLocation.longitude);
			}
			break;
		case LocationServiceStatus.Failed:
			locStatus = "Failed";
			break;
	}
}

function OnGUI () {
	GUI.Label (Rect(5, 5, Screen.width-10, 20), locStatus);
	GUI.Label (Rect(5, 30, Screen.width-10, 20), locInfo);
}

function Destroy () {
	iPhoneSettings.StopLocationServiceUpdates();
}

Hierarchyに適当なオブジェクトを追加し、このプログラムを追加すると動作します。

  • このサンプルではアプリの動作が開始すると自動的に位置情報の取得を始め、毎フレーム情報を更新して画面に表示します。
  • 画面には現在の位置情報取得についてのステータスと取得出来たデータを表示します。
  • 画面をタップすると取得出来た値を元にその位置をGoogle マップに表示します。

プログラムの解説

function Start () {
	iPhoneSettings.StartLocationServiceUpdates();
}

位置情報の取得を開始します。


	switch (iPhoneSettings.locationServiceStatus) {

Update () で iPhoneSettings.locationServiceStatus の値により処理を分岐しています。このプロパティはGPSなど、位置情報を取得する装置の準備が完了し、情報を取得仕始めると LocationServiceStatus.Running に変化します。


			locInfo = "Location: " + iPhoneInput.lastLocation.latitude + " " +
				iPhoneInput.lastLocation.longitude + " " +
				iPhoneInput.lastLocation.altitude + " " +
				iPhoneInput.lastLocation.horizontalAccuracy + " " +
				iPhoneInput.lastLocation.timestamp;

ステータスが LocationServiceStatus.Running に成っている時は iPhoneInput.lastLocation に現在取得出来ている位置情報が入っています。

プロパティ内容
latitude緯度
longitude経度
altitude高度
horizontalAccuracy水平方向の精度
verticalAccuracy垂直方向の精度
timestampタイムスタンプ

function Destroy () {
	iPhoneSettings.StopLocationServiceUpdates();
}

今回のサンプルでは毎フレーム位置情報を取得しているので Destroy () で位置情報の取得を停止していますがアプリによっては一回取得するだけで大丈夫なアプリも多いかと思います。

その様なアプリの場合はデータの取得が完了したら直ぐに位置情報の取得を停止する様にして下さい。位置情報の取得はかなりバッテリー消費する処理です。

関連情報

Unity Script Reference – iPhoneInput.lastLocation

http://unity3d.com/support/documentation/ScriptReference/iPhoneInput-lastLocation.html

Unity Script Reference – LocationInfo

http://unity3d.com/support/documentation/ScriptReference/LocationInfo.html

[][]UnityのCEO David HelgasonさんがWeb TV「ThisWeekIn」に出演

D

動画の時間帯ごとの内容についてはこちらに丁寧な説明が有ります。

David Helgason of Unity Technologies on This Week in Startups #157 | ThisWeekIn

http://thisweekin.com/thisweekin-startups/david-helgason-of-unity-technologies-on-this-week-in-startups-157/