次はスマホでも動くように、タッチパネルで操作したときの移動処理を追加することにした。
タッチした情報を取得するには、まず、mtlist命令を使う。
二本指や三本指でタッチした場合、それぞれの情報を一度に取得する。
取得された情報は、配列として格納される。
今回は、マルチタッチは不要なので、常に0番目(一本目のタッチ)の情報があればいい。
mtlist命令で得られるのはタッチの情報が入ったIDだけ。
そのIDをもとに、mtinfo命令で、さらにタッチしたときの情報を取得する。タッチがオンオフか、タッチしたX、Y座標が指定した配列に格納される。
あとは、BASIC!で作ってた座標の判定処理を移植すれば、終わり。と思っていたが、キー操作とは違って、やっぱりタッチしたままだと、連続判定されてしまう。
幸い、指が完全に離れていれば、mtlist命令を実行したときに、stat=0が返ってくるので、これを利用してフラグを作った。後は、BASIC!の時と同じようにフラグで判定処理を加えた。
タッチパネルなしのWindowsで動かすと、マウスの左クリックで反応する。キーボード操作の判定処理もそのまま残したので、どちらでも操作可能になった。
*playermove ;キーボード操作の判定 stick key if key&1 : px=px-1;カーソル左 if key&4 : px=px+1;カーソル右 ;タッチパネル操作の判定 mtlist touchid num=stat if num>0 & touched=0 { ;一本以上指がタッチしていて、かつタッチした直後なら id = touchid(0);一本目のタッチは0番目 mtinfo touch,id if touch(0)=1 {;タッチがオンならば tx=touch(1):ty=touch(2):touched=1;タッチされた座標を変数に代入、タッチしたフラグを付ける if ty>=250 & ty<=320 { if tx>=35 & tx<=105 { px=px-1 } else : if tx>=497 & tx<=567 { px=px+1 } } } } else : if num=0 : touched=0 ;プレイヤー位置の調整 if px<0 : px=0 if px>2 : px=2 ;プレイヤーを表示する pos ppos(px),207 gmode 2:celput 2;透過PNGを表示するモードに変えて return
HSP3Dish Helperで、apkファイルをビルドして、Googleドライブ経由でスマホにインストール。
無事にタッチ操作で、救助隊を左右に動かせるようになった♪