プロフィール

JaJa

JaJa
ツイニ スマートフォンヲ テニイレタゾ~! ('▽'ノ

...Now Developing
→ちょっと大きいサイズ
ブログ内検索
リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012/04/20▼ジェスチャーを判定する処理を変更

スマートフォンのゲームは、主にタッチパネルを使ったジェスチャーと呼ばれる操作によってプレイします。
画面を1回叩く「タップ」とか、画面の1箇所を1秒くらいタッチしたままにしておく「ホールド」とか、2本の指でつまむようにタッチする「ピンチ」とか。

これらの操作については、マイクロソフトが用意してくれているReadGestureという関数を使って処理していたんだけども、脳内ゲームをしばらくプレイしていると、ちょっとカスタムしたほうが良いかなあーと思えてきました。
というのも、この関数を中心としたジェスチャー処理は本当に便利で、面倒な判定などを知らないところで勝手にやってくれて、「今、タップしたよ!」とか知りたい結果だけ教えてくれるんだけど、その判定をこちらで制御できる状態にしておいたほうが、個々のゲームに合わせた調整が行えそうなので。

デフォルトでは、ホールドというジェスチャーは1秒くらいタッチし続ける操作なのですが、例えば、ユニットをホールドすると、そのユニットのステータスが表示されるようにしたい場合、1秒待ってから表示されるのは不便な気がします。
もっとサクッと見たいはずなので、ここは0.2秒くらいのホールド操作で表示させるようにしたい……とか。

そんな感じで、ReadGestureを使わずに、代わりにTouchPanel.GetStateを使う処理へとプログラムを書き換えることに。
TouchPanel.GetStateは、タッチした画面座標とタッチの状態(画面に触れたか/画面から離されたか)のみを列挙したようなシンプルな情報のみが得られる関数なので、それらの情報がどんなジェスチャーを意味しているのかといった判定は、自分で組まなくてはいけません。
まあ、逆に言えば、既存のジェスチャーを好きなようにアレンジすることができるってことで、秒間16連射タップとか、3分間ホールドしないと反応してくれないスーパーロングホールドといったジェスチャーも実現可……たぶん作らないけど。('-';

とはいえ、ジェスチャーの判定に手間取っており、プログラムの変更は明日一杯までかかりそう。ぐももも。。。

20120420.jpg
▲近所のコンビニで買ってきた朝食。食べたら寝て、起きたら続きをやる予定~
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。