スクラッチプログラミング - タブレットでもあそべる!タッチスクリーンそうさ
キーボードをつかわなくてもスプライトを操作(そうさ)できるプログラムのつくりかたを紹介(しょうかい)します。画面(がめん)をゆびでさわることで、タブレットでもゲームをたのしむことができるようになりますよ。
更新日:2023年12月27日
キーボードがないと「キーがおされた」ブロックはつかえない!
今回(こんかい)は、キーボードのないタブレットでプロジェクトをつくるときにやくだつ、タッチスクリーン操作(そうさ)のプログラムを紹介(しょうかい)します。
Scratchには、「(スペース)キーがおされたとき」や「(スペース)キーがおされた」など、キーボードをつかってスプライトを操作(そうさ)するブロックが用意(ようい)されています。これらのブロックは、キーボードのないタブレットなどでつかうことはできません。
「キーボードがないと、ゲームをつくってあそぶことはできないの?」とおもうかもしれませんが、そんなことはありません!タブレットなどのタッチスクリーンでも、スプライトを操作(そうさ)できるようにプログラミングすることができますよ。
サンプルさくひんであそんでみよう
したのプロジェクトは、キーボードがなくてもスプライトをうごかせるようにプログラミングしています。プレイヤーを操作(そうさ)して、くだものをあつめましょう。パソコンであそぶときは、やじるしキーで操作(そうさ)できます。
- 左右(さゆう)にうごかす…プレイヤーのよこのほうをタッチする
- ジャンプさせる…プレイヤーのうえのほうをタッチする
(みどりのはたをおして、スタートです。プロジェクトは、ScratchのPyxofyページでもごらんになれます。)
このきじをよむとわかること
- タッチ操作(そうさ)で、スプライトを左右(さゆう)にうごかす方法(ほうほう)
- タッチ操作(そうさ)で、スプライトをジャンプさせる方法(ほうほう)
プレイヤーをさゆうにうごかす
キーボードをつかってプレイヤーを左右(さゆう)にうごかしたいときは、つぎのようなプログラムになります。
これとおなじように、タッチスクリーンでプレイヤーを左右(さゆう)に操作(そうさ)できるようになりましょう!
タッチしているかどうかをしらべよう
まずは、ステージをタッチしているかどうかをしらべます。そのためにつかうブロックは、「マウスがおされた」です。マウスをつかっていなくても、ステージがタッチされているかどうかをしらべるときに、このブロックをつかうことができます。
- 「もし<>なら」に「マウスがおされた」をくみあわせる
タッチしているばしょをしらべよう
つぎに、ステージのどこをタッチしているかをしらべましょう。プレイヤーより右側(みぎがわ)をタッチしたときはみぎへ、左側(ひだりがわ)をタッチしたときはひだりへ、プレイヤーがうごくようにしますよ。
右側(みぎがわ)か左側(ひだりがわ)、よこの位置(いち)をしるためには「xざひょう」がわかればいいですね。タッチした場所(ばしょ)のxざひょうをしらべるためにつかうのは、「マウスのxざひょう」ブロックです。
プレイヤーのxざひょうをあらわす「xざひょう」ブロックをつかって、タッチした場所(ばしょ)とプレイヤーのxざひょうをくらべます。
タッチした場所(ばしょ)のxざひょうが、プレイヤーのxざひょうよりおおきかったら、プレイヤーより右側(みぎがわ)をタッチしているということです。
- 「マウスのxざひょう」が「xざひょう」よりおおきい
タッチした場所(ばしょ)のxざひょうが、プレイヤーのxざひょうよりちいさかったら、プレイヤーより左側(ひだりがわ)をタッチしているということです。
- 「マウスのxざひょう」が「xざひょう」よりちいさい
プレイヤーをうごかそう
ステージをタッチしていて、その場所(ばしょ)がプレイヤーより右側(みぎがわ)なら、プレイヤーをみぎへうごかします。「かつ」ブロックをつかって、「もし<>なら」ブロックにくみあわせましょう。ひだりへうごかすときも、おなじようにブロックをくみあわせてください。
- もしマウスがおされた、「かつ」、マウスのxざひょうがxざひょうよりおおきいなら
- もしマウスがおされた、「かつ」、マウスのxざひょうがxざひょうよりちいさいなら
ステージをタッチするとプレイヤーが左右(さゆう)にうごくようになりました!ステージからゆびをはなすと、うごきがとまりますよ。
さてこんどは、プレイヤーがジャンプするようにプログラミングしていきましょう!
プレイヤーをジャンプさせる
「うわむきやじるしキー」をつかってプレイヤーをジャンプさせるばあいは、したのようになります。このプログラムでは、よりリアルなジャンプになるように、変数(へんすう)でスプライトに重力(じゅうりょく)をあたえてうごかしています。
- 重力(じゅうりょく)で、したへうごかす
- 地面(じめん)にいるときだけ、ジャンプできる
- 地面(じめん)にうまらないようにする
重力(じゅうりょく)をあたえたジャンプのくわしいつくりかたは、こちらの記事(きじ)をごらんください。
タッチしているばしょをしらべよう
タッチ操作(そうさ)でプレイヤーをジャンプさせたいときは、プレイヤーよりうえをタッチしているかどうかをしらべます。たての位置(いち)をしるためには「yざひょう」がわかればいいですね。
- 「マウスがおされた」、「かつ」、「マウスのyざひょうがyざひょうよりおおきい」
- 「もし<>なら」にくみあわせる
ステージをタッチすると、プレイヤーがジャンプするようになりました!でもこのままだと、プレイヤーの右側(みぎがわ)や左側(ひだりがわ)をタッチしているつもりなのに、ジャンプしてしまうときがあります。
よこをタッチしているのにジャンプするのはなぜ?
プレイヤーのよこをタッチしているつもりなのに、ジャンプしてしまう理由(りゆう)。それは、タッチしている場所(ばしょ)が、プレイヤーのyざひょうよりほんのすこしうえでも、「マウスのyざひょうが、プレイヤーのyざひょうよりおおきい」というジャンプの条件(じょうけん)をみたしてしまうからです。
これを解決(かいけつ)するために、どこをタッチしているのかをハッキリ区別(くべつ)できるようにしましょう。
ざひょうにかずをプラスしよう
タッチしているのがプレイヤーの「うえ」であることをわかりやすくするために、タッチしている場所(ばしょ)とプレイヤーの座標(ざひょう)とのあいだに、余裕(よゆう)をもたせます。つかうのは「()+()」ブロックです。
プレイヤーのyざひょうに、たとえば「20」プラスして、それよりうえをタッチしたときにジャンプする、という条件(じょうけん)にします。
- yざひょうに(20)プラスする
プレイヤーのよこをタッチしているのにジャンプしてしまう、という問題(もんだい)を解決(かいけつ)することができました!
これより下は、Pyxofyメンバー限定公開です。メンバーになると読むことができます。登録方法は、『メンバー登録・ログイン方法』をご覧ください。
「きょうからはじめるスクラッチプログラミング入門」by Pyxofy
Pyxofy から Scratch の基本をまとめた電子書籍を出版しました。
Apple Books・Kindle でご購入ください。