AndroidTweet家電量販店などに行くと、スマホやタブレット用のゲームをプレイするための、Bluetoothコントローラーが売っています。こんな感じ(Google画像検索)。ゲームがやりたい時に必ずコントローラーが近くにあるか?というと、ほとんどの場合は無いと思うんですよ。私は普段、iPadはこういう状態で持ち歩いています。ゲーム用のコントローラーなど持ち歩いていません。この状態だとiPadの画面を操作するタイプのアクションゲームも出来ません。私達は普段コントローラーに似たサイズのデバイスを持ち歩いているではないか、ということに気付いたわけです。これならば、ちょっとゲームがやりたくなった時にパっとスマホを取り出して、iPadのゲームをやって、終わったらスマホは充電するなり、ポケットに入れるなりすればコントローラーを持ち歩く必要ありません。ゲームのBluetoothコントーラーとして使えるアプリを作ればいいジャマイカと思いますが、そうは簡単にはいかないのです。ゲームのコントローラーには通常、方向指示ボタンがついています。どこの誰が考えたかわかりませんが、これが実に良く出来ていて、私達はこれに完膚無きまでに、慣れさせられています。そこで、スマホの画面に十字の絵を描き、それをコントローラーのごとく操作させようとすると・・・・これが上手くいかないんですねぇ。指先にまったくボタンを押している感触が無いので、指がどんどん十字の絵から離れていってしまうんですね。そこで次に、「最初にタッチした場所を中心として上下左右を判断する」という方法を取ったアプリが出てきました。これはまぁ最初の、なんにも考えていないコントローラーよりいくらかはマシでした。指を離してしまえば次のタッチでリセットされるのですから。これもゲームを続けていくとイライラさせられることになります。位置をリセットするためには指を一旦離さないといけないからです。使いやすくするために導入した「一旦指を離す」という操作が、ゲームを続けているとイライラポイントに変わってしまうんですね。指を離せない場面というのも存在します。アクションゲームで多いと思うのですが、動き回りながら敵を倒していくタイプのゲームだと指を離している暇が無いのです。こんなゲーム*1です。すると一番最初のなにも考えてない十字の絵と同じ現象が出てしまうのです(指がどんどん十字から離れていってしまう)。このアンチノミーを解消するにはどうすればいいのか?いつかAppleがこれを解決するベストソリューションを提供してくれると信じて待っていたのですが、全く出てくる気配すらありません。それどころか、WebのアップルストアでBluetoothゲームコントローラーを売ってる始末です。すればいいか?と考えてみました。「十字の位置をリセットするために指を離す」を除外します。そもそもゲームをやっている時に指を離さなければならないなどと言うことは、思考の邪魔以外のなにものでもありませんし、上記の理由により離すことが出来ない場面が往々にして訪れます。指先で十字を認識出来ない以上、指はどんどん画面上を移動していくので、どこかで位置をリセットしなければいけません。そこで、「二回目に閾値を越えた量の位置移動があったらそこを中心点にする」という方法を考えてみました。上記の図で説明すると、まず最初にタップした位置を中心点として指の方向を取得します。図の左で言うと「上方向」の処理を行います。そのままタップし続けるとずーっと「上方向」の処理をし続けますが、指の動きがある閾値を越えたところで、その時の指の位置を中心として十字コントローラーをリセットします。画面をタップし指を上へ動かすと自キャラは上へ歩いて行きますが、指を動かすとリセットされるので自キャラは止まります。それだと、方向を変えるためには一旦止めてから再び方向を指示するという形になり、タップし直してリセットとあまり変わりません。そこで、方向を指示した後の指の動かす方向によって処理を分ければいいのではないかという考えに辿り着きました。おおまかに図にすると上図のようになります。最初にタップした位置から上へ指を動かすと上方向への指示になります。そこから閾値を越えて右へ指を動かした場合はそこを中心としてリセットし、右方向への指示とします。左の場合はリセットして左方向への指示です。下の場合は2段階になり、下に動かすとリセットされそこを十字の中心にします。そこからさらに下に動かした場合は下方向への指示とするという感じです。はてなブログProデジタル生活のススメ。(3)月別アーカイブ広告リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!digitarhythmさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。