くまちゃんのiOS/Androidゲームプログラミング

マイペースでゲームつくってます。

ゲームプログラミングのはなし11

【ゲームプログラミングのはなし11】
入力のはなしでもうひとつだけ。スマホが普及して面白いのは、「タッチスクリーンでどうやって入力方向を識別するのか?」という問題があります。

キーボードやコントローラーであれば、押されたキー、ボタンは明白であり、個別に割り振られた電気信号がOSに送られてくるので、それを見れば一目瞭然です。プログラムもとても簡単です。

ところがタッチスクリーンとなると、ただの一枚のガラスなので、押された座標しかわかりません。受け取ることのできるデータは指が押した位置のX座標、Y座標しかないのです。

いわゆるバーチャルパッドと呼ばれる半透明の十字キーやボタンの場合は、それらの座標を照合して、上方向の入力がされた、ボタンが押された、と判断するのですが、それはロジック的には今までのものと同じでとりたてて面白いものではありません。

そうではなく、バーチャルパッド無しでも上下左右の入力を識別する方法があるのです。

それは、タッチした座標を記憶する変数を2つ用意し、前後で比較することで実現できます。

具体的には前に押されたX1座標と今押されたX2座標を引き算して、マイナスだったら左方向への入力、プラスだったら右方向への入力と判断するのです。Y1座標、Y2座標も同様にすれば全方向に対応できます。

さらに、斜め入力をさせたくない時には、X座標の計算結果とY座標の計算結果の絶対値を比較し、多い方を優先すれば4方向の識別ができます。

まあ、ちょっとしたとんちみたいなもんですが、ゲームプログラミングしているとこういうオモシロミと出会うことがありますよ。あわてないあわてない。ひとや(続く)

https://itunes.apple.com/jp/app/doragondanku/id866740873?mt=8&uo=4&at=10l8JW&ct=hatenablog