Scratchを使って、タブレットでも遊べるゲームを作るため、ゲームに使えるタッチ操作を作ってみました。今回は、アングリーバードみたいに、指やマウスでひっぱって、はなすと飛んでいくパチンコ型アクションを実現します。

パチンコといっても、ギャンブルのパチンコではありません。最初のイラストのように、ゴムをひっぱって弾を飛ばすスリングショット(Sringshot)です。

中央のピンクのマルを、指かマウスでひっぱって動かします。

前回、Scratchで、タッチ操作を検出する方法を調べてみたので、その応用編です。

操作を考える

この操作は、3つの段階に分けることができます。

  • ready:何もさわらない
  • pull:画面にタッチ。そのまま、指で位置を変える
  • go:指をはなす

この3つの状態は、特定のアクションで変化します。
図にすると、こんな感じです。

マルが状態。矢印がアクション。「go」から「ready」には、強制的に戻ります。

プログラミング

この3つの状態に合わせて、プログラムを作っていきましょう。
ここでは、状態ごとにブロックのかたまりを用意します。また、状態をあらわす「status」変数を用意します。

1. 指の動きに合わせる

まずは、指の動きに合わせて動くだけのプログラムです。

「ready」で、タッチされるのを待ちます。スプライトが押されたら「pull」に移行します。「マウスが押された」でなくなるまで、指の位置に合わせて移動して。指を離したら「ready」に戻ります。

指を離した時「0.1秒待つ」が入っているのは、「ready」と「pull」が重なるのを防ぐため。

発射しないので、まだ「go」はありません。

https://scratch.mit.edu/projects/302221441/

2. 指をはなすと飛んでいく

次は、指をはなすと飛んでいくプログラムです。

飛んでいく方向を検出するため、「center」スプライトを用意します。
マウスが押されなくなったら、「goを受け取ったとき」ブロックに移動します。

https://scratch.mit.edu/projects/302229480/

3. 引っぱり量を見えるようにする

引っぱっている動きが分かりやすくなるように、効果を加えます。そのため、指の位置に合わせて、「center」スプライトの向きを変えます。また、「arrow」スプライトの長さで、引っぱっている距離をあらわします。

https://scratch.mit.edu/projects/303202207/

パチンコで発射するゲームを作った

この基本形にルールを追加したのが、こちらのゲームです。

  1. 中央のマルの中をドラッグ/指で引っぱる
  2. マウス/指を離すと、発射!
  3. シカクのターゲットをねらおう
  4. カベにはねかえると、ポイントアップ!

https://scratch.mit.edu/projects/302458480/

やってみよう

という訳で、パチンコ型アクションゲームを実現するタッチ操作を作りました。ゲームの開発過程は、こちらのスタジオにまとめてあります。

https://scratch.mit.edu/studios/7784941/

これで、タブレットらしいゲームができましたね。

次は、画面上で指をすべらせる「スワイプ」と「フリック」を実現してみたいと思います。

Scratchで、フリック・スワイプ操作を実現してみた。
Heppocode Garage
https://www.catch.jp/heppo-code/2019/05/07/flick-and-swipe/