今回のエンジニアブログを担当します乾です。
よろしくお願いします。
今回はUnityを使用してスマートフォンアプリ開発を行っている人向けに、ジェスチャーの取得を簡単に行える「TouchScript」という無料のアセットを紹介したいと思います。
特徴
•Interactive Lab社のValentin Simonov氏が開発
•画面全体の判定は勿論、オブジェクトごとの判定を取ることが可能
•クロスプラットフォーム
では実際にTouchScriptを導入しジェスチャーを取得していきます。
TouchScript導入
1
まず始めにTouchScriptをインポートします。
2
空のGameObjectを作成し、コンポーネントにTouchManager、MouseInput、MobileInputを追加します。
3
MainCameraに「CameraLayer」を追加します。するとTouchManagerのTouchLayerの項目にCameraLayersが追加されます。
4
次にデバッグしやすいようにAsset/TouchScript/PrefabにあるTouchDebuggerをシーン上に配置します。するとタッチした画面上にポインターが表示される様になります。
オブジェクトごとのジェスチャー取得
今回はCubeをTapした際にCubeの色を変えてみます。
1
Cubeを作成してコンポーネントにTapGestureを追加します。
2
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すると色が変わるはずです。
個別の取得はコライダーが付いているオブジェクトであれば取得が可能です。
画面全体の判定
今度は画面上でPanを行った際にカメラが移動するようにします。
1
空のGameObjectを作成しコンポーネントにFullscreenLayer、PanGestureを追加します。
2
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; }
これで実行してみるとカメラが上下左右に動くはずです。
今回作成したプロジェクトはこちらからダウンロード出来ます。
このように簡単にジェスチャーの取得ができるので開発で使ってみてください。
今後はさらに理解を深めジェスチャーを自作してみたいです。