GP10 ミドルウェア 04

今週のサンプルプログラム

swatter

https://github.com/vga-unity/swatter

ハエ叩きゲーム的なもののプロトタイプ。タッチで箱を潰すことができる。タッチの処理とコリジョン検出のテスト。

ポイント

主な処理は Swatter スクリプトで行なっている。

// 当たり判定の大きさ。
var collisionRadius = 0.5;

function Update() {
    // 各タッチ点を順に処理する。
    for (var touch in Input.touches) {
        // タッチのフェーズが「開始」であれば……
        if (touch.phase == TouchPhase.Began) {
            // コリジョンのチェックを行う。
            CheckCollision(touch.position);
        }
    }
}

// 指定されたスクリーン位置でのコリジョンチェックを行う関数。
private function CheckCollision(screenPosition : Vector3) {
    // ワールド座標への変換を行う。変換後の高さは床の高さとする。
    screenPosition.z = camera.transform.position.y;
    var worldPosition = camera.ScreenToWorldPoint(screenPosition);
    // 命中フラグ。
    var hitFlag = false;
    // 指定した座標の球と重なっている Collider を列挙する。
    for (var collider in Physics.OverlapSphere(worldPosition, collisionRadius)) {
        // 相手のタグが Enemy であれば、ダメージメッセージを送信する。
        if (collider.gameObject.tag == "Enemy") {
            collider.gameObject.SendMessage("ApplyDamage");
            hitFlag = true;
        }
    }
    // 空振りの場合にエフェクトを出す。
    if (!hitFlag) Instantiate(missFx, worldPosition, Quaternion.identity);
}

Unity Remote を使う

動作チェックの度に Andoird 実機への転送を行うのは面倒。これを解決するための手段として Unity Remote と呼ばれるツールが用意されている。

Unity Remote とは

タッチや加速度など実機に対して行った入力を PC 上の Unity に反映させるというもの。また、PC 上でレンダリングされた映像はリアルタイムに実機へ送信され画面に表示される。

これを使うことで実機への転送を行わずに実機での動作チェックを行うことができる。

セットアップ

まず Unity Remote を Android 実機にインストールする。 Android Market で無料アプリとして配布されているので、これをダウンロードすればよい。

Android 実機と PC を USB ケーブルで接続し、実機上で Unity Remote を起動する。

Unity のプロジェクトの Platform を Android に切り替える。これで Unity Remote が有効になる。

使用方法

以上の準備をした状態で Unity 上のゲームを普通に実行するだけでよい。うまく繋がれば、実機上にゲーム画面が表示され、実機に対する入力が Unity へと反映されるようになる。

トラブルシューティング

うまく接続できない場合は、 Unity Remote を立ち上げたまま PC 上の Unity だけを再起動してみるとよい。