ヤマコーブログ

五流ゲームプログラマー山木光石がUnityでなんかゲームを作るブログ。 なお言語はC#がメインです。 基本的に備忘録とかになります。

Androidで動かすことを念頭においてイロイロ調べてみました。


http://japan.unity3d.com/developer/document/tutorial/2d-shooting-game/mobile/03.html
 

ふむふむ…



http://naichilab.blogspot.jp/2013/06/unity_19.html 


ふむ…






http://tsubakit1.hateblo.jp/entry/20120605/1338908047
  

\デデーン/

InputTouchesというアセットを買う!というのが解決策でした。25$。

http://u3d.as/content/song-game-dev/input-touches/2Tf

 

いいのかこれで、とも思わなくもないが、簡単に出来るならそれが一番いいッ!
ちなみに、このアセットは 【PCとiOSデバイスで動作とテストが可能】と説明書きに書いてますが、
Androidで動くことを確認しています。 

UnityでGPSを使ったゲームを作ってみたい!という欲が出てきたので、GPSを取得する方法をさがして見よう。

出てきました。

※この記事はAndroidでしか検証していません。

チラ裏Unity 

この記事にある内容をコピペしたら、動きます。 
しかし、これは最初の一回だけ取得されるだけで、常に位置情報を取得してくれるわけではありません。

GPSゲームを作るなら、常に更新され続けるようにしたいですね。


using UnityEngine;
using System.Collections;

public class GPSLoader : MonoBehaviour {
    IEnumerator Start() {
        if (!Input.location.isEnabledByUser) {
            yield break;
        }
        Input.location.Start();
        int maxWait = 120;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) {
            yield return new WaitForSeconds(1);
            maxWait--;
        }
        if (maxWait < 1) {
            print("Timed out");
            yield break;
        }
        if (Input.location.status == LocationServiceStatus.Failed) {
            print("Unable to determine device location");
            yield break;
        } else {
            print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
        }
//止めません
        //Input.location.Stop();
    }
}
void Update(){
//GPS情報
printf("Location\n緯度:" + Input.location.lastData.latitude + "\n経度:" + Input.location.lastData.longitude) ;
}

※Updateの内容は動かしてないのでちゃんと動くかは保証できません。
 
見てわかるように、一度 
Input.location.Start();をすると、Input.locationの内容が取得出来るようになります。
ただ、バッテリーをそれなりに食うようなので、適当にInput.location.Stop()で止めたほうがいいんでしょう。たぶん。 

PSMでタッチ機能や、センサー類を利用する場合はこちら。

void OnGUI(){
GUILayout.Box(string.Format("mousePosition={0}, {1}, {2}", Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
//タッチ機能
for (int i = 0; i < Input.touchCount; ++i)
{
Vector2 pos = Input.GetTouch(i).position;
GUI.Label(new Rect(pos.x, Screen.height - pos.y, 50, 30), "(X) #" + i);
}
 
//背面タッチ
foreach (Touch touch in PSMInput.touchesSecondary)
{
Vector2 pos = touch.position;
GUI.Label(new Rect(pos.x, Screen.height - pos.y, 50, 30), "(X) #" + touch.fingerId);
}

//加速度センサ
GUI.Label (new Rect (20, 380, 200, 30), "Acceleration:" + Input.acceleration);
//ジャイロセンサ
GUI.Label (new Rect (20, 440, 200, 30), "Gyro:" + Input.gyro.rotationRate);



ほぼ参考URL先のコピペです。
前面は6つまでマルチタッチOK,背面は4つまでのようです。

これと前のボタン入力があれば十分にゲームになりそうですね!


参考
http://mohammedari.blogspot.jp/2014/06/unity-for-psmps-vita.html
https://psm.playstation.net/static/general/all/unity_for_psm/ja/Documentation/Manual/PSMFeatures.html 

↑このページのトップヘ