はじめまして、2014年度新卒の小川敬太と申します!
現在はUnityのエンジニアとして日々精進しております。

今回のテーマは、社内の自主的な活動として行われているゼミの活動紹介として、Google Glassで遊べる3Dゲームを簡単に開発する方法の紹介です。

社内のゼミでは、大学のゼミとは異なりますが最新技術やデバイスなど、興味のあることを学ぶために社員が自主的に集まって活動を行っています。

今回は、Android WatchやApple Watch, Google Glassなど最近注目のウェアラブル分野のゼミから、Unityで作った3Dのゲームを簡単にGoogle Glassに対応させる方法を紹介します。

Google Glassとは

TVやネットのニュースで見たことも多いと思いますが、Google Glassの紹介をします。
Wikipediaによると、

「Google Glass(単にGLASS)とはGoogleがProject Glassという研究開発プロジェクトで開発しているヘッドマウントディスプレイ(HMD)方式の拡張現実ウェアラブルコンピュータである。」
Google Glass (2014.10.21現在)


要するに、Googleが開発しているメガネ型のヘッドマウントディスプレイです。



Google Glassで3Dゲーム

Google Glassの開発は端末さえあればAndroidの開発と同様の環境で行えますが、3Dゲームなどを開発する場合はUnityなどのゲームエンジンを使いたくなると思います。しかし、3Dゲームの開発でよく使われるUnityのアプリはそのままではGoogle Glassで動かすことはできません。

Google Glassでも簡単にUnityの3Dゲームを動かしたい!

ということで、Unityを以下の手順でGoogle Glass対応させます。

1. タッチパッド対応
2. ボイストリガーのセット


タッチパッド対応

まずはじめに、Google Glassのタッチパッドに対応できるようにUnity上のMain Cameraなどのオブジェクトにタッチ処理のスクリプトをアタッチします。
using UnityEngine;
using System.Collections;

public class SwipeManager : MonoBehaviour {

private const float THRESHOLD_X = 25f;
private const float THRESHOLD_Y = 20f;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

if(AndroidInput.touchCountSecondary > 0){

Touch touch = AndroidInput.GetSecondaryTouch (0);

if (touch.phase == TouchPhase.Moved) {

Vector2 direction = touch.deltaPosition;

if (direction.x > THRESHOLD_X) {
// Swipe Forward
} else if (direction.x < - THRESHOLD_X) {
// Swipe Backward
} else if (direction.y < - THRESHOLD_Y) {
// Swipe Down
Application.Quit ();
}
}
}

}
}



Google GlassのタッチパッドではInput.GetTouch()などの通常Unityで使うタッチ処理でタッチが検知できないため、AndroidInput.GetSecondaryTouch()を使います。
今回は指1本のみの処理とし、閾値を超えるとそれぞれ前スワイプ、後スワイプ、キャンセルとなります。
それぞれの処理を中に書くことで、Google Glassでタッチの検出ができるようになります。

ボイストリガーのセット

次は、UnityのプロジェクトをAndroidStudioに書き出して、ボイストリガーの対応を行います。Google Glassでは音声コマンドによってアプリケーションを起動するため、そのままだとUnityで書き出したアプリはGoogle Glassでは起動できません。

・app/src/main/res/xmlフォルダを作成、xmlフォルダ内にvoice_trigger.xmlを作成して以下を記述
<?xml version="1.0" encoding="utf-8"?>
&lttrigger keyword="Start My Application" />


・AndroidManifest.xmlのactivity内のintent-filterとmetadataを以下のように変更
&ltintent-filter>
&ltaction android:name="com.google.android.glass.action.VOICE_TRIGGER" />
</intent-filter>
&ltmeta-data
android:name="com.google.android.glass.VoiceTrigger"
android:resource="@xml/voice_trigger" />



・AndroidManifest.xmlにpermissionを追加
&ltuses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/>


これでGoogle Glassの音声コマンドでUnityのアプリケーションが起動できるようになりました。

今回は”ok glass start my application”でアプリが起動します。trigger keywordを好きな言葉に変更することで、好きな音声コマンドでアプリを起動することができます。
また
&lttrigger command="SHOW_ME_A_DEMO" />

などと書くと、公式のボイスコマンドが使えます。

その他、加速度やジャイロは通常の方法で使えるため、Google Glassのセンサーを利用したゲームの開発も行えます。

最後に

以上、Google Glassで簡単に3Dゲームを開発する方法を紹介させていただきました。これで、今までに開発した3DゲームをGoogle Glassで遊ぶことができます。

それでは、最後まで読んで頂きありがとうございました!