エンジニア

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

投稿日:2014年9月9日 更新日:

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

今回は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
今回作成したプロジェクトはこちらからダウンロード出来ます。

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

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-,

© WonderPlanet Inc.