スクラッチプログラミング - タブレットでもあそべる!タッチスクリーンそうさ

キーボードをつかわなくてもスプライトを操作(そうさ)できるプログラムのつくりかたを紹介(しょうかい)します。画面(がめん)をゆびでさわることで、タブレットでもゲームをたのしむことができるようになりますよ。

スクラッチプログラミング - タブレットでもあそべる!タッチスクリーンそうさ
Photo by Kelly Sikkema / Unsplash

更新日:2023年12月27日

キーボードがないと「キーがおされた」ブロックはつかえない!

今回(こんかい)は、キーボードのないタブレットでプロジェクトをつくるときにやくだつ、タッチスクリーン操作(そうさ)のプログラムを紹介(しょうかい)します。

Scratchには、「(スペース)キーがおされたとき」や「(スペース)キーがおされた」など、キーボードをつかってスプライトを操作(そうさ)するブロックが用意(ようい)されています。これらのブロックは、キーボードのないタブレットなどでつかうことはできません。

キーを使うときに反応するブロック
キーを使うときに反応するブロック
・・・AD・・・

「キーボードがないと、ゲームをつくってあそぶことはできないの?」とおもうかもしれませんが、そんなことはありません!タブレットなどのタッチスクリーンでも、スプライトを操作(そうさ)できるようにプログラミングすることができますよ。

サンプルさくひんであそんでみよう

したのプロジェクトは、キーボードがなくてもスプライトをうごかせるようにプログラミングしています。プレイヤーを操作(そうさ)して、くだものをあつめましょう。パソコンであそぶときは、やじるしキーで操作(そうさ)できます。

  • 左右(さゆう)にうごかす…プレイヤーのよこのほうをタッチする
  • ジャンプさせる…プレイヤーのうえのほうをタッチする

(みどりのはたをおして、スタートです。プロジェクトは、ScratchのPyxofyページでもごらんになれます。)

このきじをよむとわかること

  • タッチ操作(そうさ)で、スプライトを左右(さゆう)にうごかす方法(ほうほう)
  • タッチ操作(そうさ)で、スプライトをジャンプさせる方法(ほうほう)

プレイヤーをさゆうにうごかす

キーボードをつかってプレイヤーを左右(さゆう)にうごかしたいときは、つぎのようなプログラムになります。

左右の矢印キーで動かすプログラム
左右の矢印キーで動かすプログラム

これとおなじように、タッチスクリーンでプレイヤーを左右(さゆう)に操作(そうさ)できるようになりましょう!

タッチしているかどうかをしらべよう

まずは、ステージをタッチしているかどうかをしらべます。そのためにつかうブロックは、「マウスがおされた」です。マウスをつかっていなくても、ステージがタッチされているかどうかをしらべるときに、このブロックをつかうことができます。

  • 「もし<>なら」に「マウスがおされた」をくみあわせる
タッチしているかどうかを調べる
タッチしているかどうかを調べる

タッチしているばしょをしらべよう

つぎに、ステージのどこをタッチしているかをしらべましょう。プレイヤーより右側(みぎがわ)をタッチしたときはみぎへ、左側(ひだりがわ)をタッチしたときはひだりへ、プレイヤーがうごくようにしますよ。

タッチしてプレイヤーが動くイメージ
タッチしてプレイヤーが動くイメージ

右側(みぎがわ)か左側(ひだりがわ)、よこの位置(いち)をしるためには「xざひょう」がわかればいいですね。タッチした場所(ばしょ)のxざひょうをしらべるためにつかうのは、「マウスのxざひょう」ブロックです。

「調べる」の中にある「マウスのx座標」ブロック
「調べる」の中にある「マウスのx座標」ブロック

プレイヤーのxざひょうをあらわす「xざひょう」ブロックをつかって、タッチした場所(ばしょ)とプレイヤーのxざひょうをくらべます。

「動き」の中にある「x座標」ブロック
「動き」の中にある「x座標」ブロック

タッチした場所(ばしょ)のxざひょうが、プレイヤーのxざひょうよりおおきかったら、プレイヤーより右側(みぎがわ)をタッチしているということです。

  • 「マウスのxざひょう」が「xざひょう」よりおおきい
演算をつかってブロックを組み合わせる
演算をつかってブロックを組み合わせる

タッチした場所(ばしょ)のxざひょうが、プレイヤーのxざひょうよりちいさかったら、プレイヤーより左側(ひだりがわ)をタッチしているということです。

  • 「マウスのxざひょう」が「xざひょう」よりちいさい
演算をつかってブロックを組み合わせる
演算をつかってブロックを組み合わせる

プレイヤーをうごかそう

ステージをタッチしていて、その場所(ばしょ)がプレイヤーより右側(みぎがわ)なら、プレイヤーをみぎへうごかします。「かつ」ブロックをつかって、「もし<>なら」ブロックにくみあわせましょう。ひだりへうごかすときも、おなじようにブロックをくみあわせてください。

  • もしマウスがおされた、「かつ」、マウスのxざひょうがxざひょうよりおおきいなら
  • もしマウスがおされた、「かつ」、マウスのxざひょうがxざひょうよりちいさいなら
左右へ動かすための条件
左右へ動かすための条件

ステージをタッチするとプレイヤーが左右(さゆう)にうごくようになりました!ステージからゆびをはなすと、うごきがとまりますよ。

さてこんどは、プレイヤーがジャンプするようにプログラミングしていきましょう!

プレイヤーをジャンプさせる

「うわむきやじるしキー」をつかってプレイヤーをジャンプさせるばあいは、したのようになります。このプログラムでは、よりリアルなジャンプになるように、変数(へんすう)でスプライトに重力(じゅうりょく)をあたえてうごかしています。

  1. 重力(じゅうりょく)で、したへうごかす
  2. 地面(じめん)にいるときだけ、ジャンプできる
  3. 地面(じめん)にうまらないようにする
上向き矢印キーをつかったジャンプのプログラム
上向き矢印キーをつかったジャンプのプログラム

重力(じゅうりょく)をあたえたジャンプのくわしいつくりかたは、こちらの記事(きじ)をごらんください。

スクラッチプログラミング - プラットフォーマーのつくりかた【じゅうりょくジャンプ】
プラットフォームゲームのジャンプをくふうしてみましょう。スプライトが着地(ちゃくち)するときに、地面(じめん)にしずんでしまうことがあります。それをふせぐプログラムをつくっていきますよ。

タッチしているばしょをしらべよう

タッチ操作(そうさ)でプレイヤーをジャンプさせたいときは、プレイヤーよりうえをタッチしているかどうかをしらべます。たての位置(いち)をしるためには「yざひょう」がわかればいいですね。

  • 「マウスがおされた」、「かつ」、「マウスのyざひょうがyざひょうよりおおきい」
ジャンプの条件を調べるために使うブロック
ジャンプの条件を調べるために使うブロック
  • 「もし<>なら」にくみあわせる
ジャンプさせるための条件
ジャンプさせるための条件

ステージをタッチすると、プレイヤーがジャンプするようになりました!でもこのままだと、プレイヤーの右側(みぎがわ)や左側(ひだりがわ)をタッチしているつもりなのに、ジャンプしてしまうときがあります。

よこをタッチしているのにジャンプするのはなぜ?

プレイヤーのよこをタッチしているつもりなのに、ジャンプしてしまう理由(りゆう)。それは、タッチしている場所(ばしょ)が、プレイヤーのyざひょうよりほんのすこしうえでも、「マウスのyざひょうが、プレイヤーのyざひょうよりおおきい」というジャンプの条件(じょうけん)をみたしてしまうからです。

プレイヤーのよこをタッチしていてもジャンプする様子
プレイヤーのよこをタッチしていてもジャンプする様子

これを解決(かいけつ)するために、どこをタッチしているのかをハッキリ区別(くべつ)できるようにしましょう。

ざひょうにかずをプラスしよう

タッチしているのがプレイヤーの「うえ」であることをわかりやすくするために、タッチしている場所(ばしょ)とプレイヤーの座標(ざひょう)とのあいだに、余裕(よゆう)をもたせます。つかうのは「()+()」ブロックです。

「演算」の中にある「()+()」ブロック
「演算」の中にある「()+()」ブロック

プレイヤーのyざひょうに、たとえば「20」プラスして、それよりうえをタッチしたときにジャンプする、という条件(じょうけん)にします。

  • yざひょうに(20)プラスする
プレイヤーのy座標プラス20よりマウスのy座標が大きいなら、という条件に変える
プレイヤーのy座標プラス20よりマウスのy座標が大きいなら、という条件に変える

プレイヤーのよこをタッチしているのにジャンプしてしまう、という問題(もんだい)を解決(かいけつ)することができました!

・・・AD・・・

これより下は、Pyxofyメンバー限定公開です。メンバーになると読むことができます。登録方法は、『メンバー登録・ログイン方法』をご覧ください。

スクラッチプログラミング - タブレットでもつかえるコントローラーをつくろう
キャラクターをうごかすためのコントローラーを、スプライトでつくってみましょう。キーボードのないタブレットをつかうばあい、「メッセージ」ブロックをつかうことで、キャラクターをそうさできるようになりますよ。