Google

2012年11月14日水曜日

Unityでコインゲー開発:ジェスチャー処理

開発ノウハウで書き忘れていた内容を少々。
ユーザ操作でけっこうめんどくさい処理の一つがタッチ操作の検出。
スワイプとタップ、押しっぱなし等の操作をUnity標準機能で行う場合、よく使うのはこの方法ではないでしょうか。

  // Update()内で記述
  if (Input.GetMouseButtonDown(0)){
    // 指ダウン。
  }
  if (Input.GetMouseButtonUp(0)){
    // 指アップ。
  }

上記のコードにフラグ処理や位置判定、先日2DGUIのRayCast判定やY軸反転等の処理を施せば、簡単なマウス位置判定が可能です。
引数の0は複数の指に対応させるためのものであるため、1本のみの判定ならさほど難しい処理は必要ありません。

しかしこんな単純な処理は実際に使われることはあまりありません。
ピンチイン、アウト等の複数判定が要求に入り込むのがよくあるケースなのです。
自分で書いてみたりもしましたが、時間ばかり掛かって良い成果が出にくい、というのが現実だったため、実際に幾つかプラグインの助けを借りました。
今回の紹介はそのひとつ「FingerGestures」です。



この商品のAssetStoreはこちら
お値段は$55。円高なので\4,300位でしょうか。
WebPlayerのデモはこちらから見れます。
(普通のPCからだと複数タッチのデモは動作しません)
APIリストは公式のものがここにあります。

特徴としてはピンチ、スワイプ、回転等の操作判定をほぼ環境依存せずに検出できる点。
C#とJavaScriptの両方のコードを同梱している点などです。
(以前書きましたが、言語混在はヤバいのでどちらか片方で統一は必須です)

ダウン、アップ、マウスダウン維持の検出もラッパされて簡単に使えます。
ピンチやスワイプ検出もとても良い機能でしたが、プロジェクトにおいて最も役立ったのは指の移動検出機能でした。
前述のデモから、1 - Basic Mode Samples→ 2 - Finger Moveで試せます。

こんな感じで判定ができます。
実機だと指が早すぎる場合、途中の反転が取れなかったりしますが、人間がよく指で操作する上図のような判定には持って来いです。
このデモは本体にもついてくるので、このデモシーンを実機に落とすと複数タッチを試すことができます。

商品なので今回はサンプルなしですが、結構しっかりしたプラグインです。
自前タップ処理で時間を掛ける前に検討してみては如何でしょうか。

0 件のコメント:

コメントを投稿