mod_layerbuttonのサンプルを見ながら、いくつかパラメータを変えてみたが、どうもしっくりこなかった。
十字キーやアナログスティックを使うゲームを作るときに、使わせていただくことにしよう。
ということで、自前で作る。
タッチパネルの操作で、タッチしたか否かは、さんざん作ってきた。今回はタッチではなくスワイプなので、座標値だけ取得してもだめ。ひとつ前の座標との差分が必要。そして、別の指はタップを処理する。同時に2本の指がタッチパネルを触ったり、スワイプしたりと忙しい…。
まずは、タッチされた指ごとの座標値を取ることから。
これはmtlistとmtinfoの組合せでできる。できるのだが、PCでは、マウスクリックとドラッグに反応するけど、1つだけ。同時に2本以上押した場合の確認ができない。いちいちスマホにプログラムを転送してチェックするのは、非常に効率が悪い。
と思っていたが、Surface Laptop GOがタッチパネル対応していることを思い出した!
画面を直接触るのはあまり好きではないのだが、楽さを取るww
プログラム自体は今でとベースは同じ。タッチされたXY座標を読み込んで、まずは画面に表示してみる。
今回は、某ゲームのスティックを4方向に倒した絵をChatGPTに作ってもらった。

この絵を元に、スティックを倒した方向ごとに、絵を切り替えると、よりそれっぽくなるw
で、四方向の反応する領域を決めて、ベースを作って動かしたら…
これ、スワイプしたっていう情報なくても、それっぽく動かせるのでは…と気づいてしまったw
ただ、上→下や、左→右とスライドしたときに、いったん中央(ニュートラル)にしたいが、いきなり切り替わる。
今までの反応領域そこで、上下左右の反応領域を小さくして、中央部分にニュートラルに戻す領域を設けてみた。
ニュートラルに戻す判定領域こうすることで、指を画面にタッチしたままスライドすると、中央を通った時にニュートラルになって、スティックが戻ったようになる。とはいえ、四方向の反応領域を直接タップすれば、一気に倒したことになるのだが。
こんな感じ。

タップした場所が分かるように、四角を描いてみた。動画キャプチャすると、マウス扱いでカーソルが出ているのはご愛敬。
まずはこれをベースに作っていくことにしよう。