読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

Unityにおける簡単なジェスチャー取得

C-Sharp Unity

今回のエンジニアブログを担当します乾です。
よろしくお願いします。

今回はUnityを使用してスマートフォンアプリ開発を行っている人向けに、ジェスチャーの取得を簡単に行える「TouchScript」という無料のアセットを紹介したいと思います。

特徴

•Interactive Lab社のValentin Simonov氏が開発
画面全体の判定は勿論、オブジェクトごとの判定を取ることが可能
クロスプラットフォーム

では実際にTouchScriptを導入しジェスチャーを取得していきます。

TouchScript導入

1

まず始めにTouchScriptをインポートします。

2

空のGameObjectを作成し、コンポーネントにTouchManager、MouseInput、MobileInputを追加します。
TouchScript_TouchManager

3

MainCameraに「CameraLayer」を追加します。するとTouchManagerのTouchLayerの項目にCameraLayersが追加されます。
TouchScript_CameraLayer TouchScript_CameraLayer2

4

次にデバッグしやすいようにAsset/TouchScript/PrefabにあるTouchDebuggerをシーン上に配置します。するとタッチした画面上にポインターが表示される様になります。
TouchScript_Debugger

オブジェクトごとのジェスチャー取得

今回はCubeをTapした際にCubeの色を変えてみます。

1

Cubeを作成してコンポーネントにTapGestureを追加します。
TouchScript_TapGesture

2

新規Scriptを作成しCubeに追加します。
TouchScript_CubeController

3

作成したScript内にTap時に呼びたい処理を記述した関数を作成します。

void HandleTapped (object sender, System.EventArgs e)  
{  
  // 色をランダム指定  
  Color color = new Color(Random.value, Random.value, Random.value);  
  // 色変更  
  this.gameObject.renderer.material.color = color;  
}  

4

作成した関数をTapGestureのデリゲートに登録します。

void Start ()   
{  
  // TapGestureのDelegateに登録  
  GetComponent<TapGesture>().Tapped += HandleTapped;  
}  

これでCubeをTapすると色が変わるはずです。
個別の取得はコライダーが付いているオブジェクトであれば取得が可能です。
TouchScript_Demo1

画面全体の判定

今度は画面上でPanを行った際にカメラが移動するようにします。

1

空のGameObjectを作成しコンポーネントにFullscreenLayer、PanGestureを追加します。
TouchScript_FullScreenLayer

2

新規Scriptを作成しMainCameraに追加します。
TouchScript_CameraController

3

作成したScript内にPan時に呼びたい処理を記述した関数を作成します。

void HandlePanned (object sender, System.EventArgs e)  
{  
  // ジェスチャーを取得  
  var gesture = sender as PanGesture;  
  Vector3 vec = gesture.LocalDeltaPosition * -1.0f;  
  Vector3 pos = this.gameObject.transform.position;         
  
  // カメラの座標を変更  
  this.gameObject.transform.position = new Vector3(pos.x + vec.x, pos.y + vec.y, pos.z);  
}  

4

作成した関数をPanGestureのデリゲートに登録します。

void Start ()   
{  
  // FullscreenLayerが付いているオブジェクトを取得しPanGestureのDelegateに登録  
  GameObject.Find("FullscreenLayer").GetComponent<PanGesture>().Panned += HandlePanned;  
}  

これで実行してみるとカメラが上下左右に動くはずです。
TouchScript_Demo2
今回作成したプロジェクトはこちらからダウンロード出来ます。

このように簡単にジェスチャーの取得ができるので開発で使ってみてください。
今後はさらに理解を深めジェスチャーを自作してみたいです。