
Scratchで「ネコを横に動かす」ができるようになると、次にやりたくなるのが…そう、ゲームっぽいやつです。
今回は、ネコがベルに近づいたらスコアが 1ずつ増える。
そしてベルは 取るたびに別の場所へ出現。
最後に 目標の数まで集めたらゲームクリア! まで作ってみました。
ジャンプは…今回はまだです!(笑)
でも、やってみると分かるんですが、横移動だけでも“ちゃんとゲーム”になります。
なので「まずはここまで完成させる」をゴールにしておくと、気持ちよく終われました。
まず完成イメージ(こんな感じになります)
画面に「スコア」「ゲーム中」「目標」が出ていて、ネコがベルを取りに行く。
ベルを取るとスコアが増えて、ベルは次の場所へワープ。
そしてスコアが目標に到達したら「クリア!」が出て終わり…という流れです。
今回のポイントは「変数3つ」でした
今回いちばん効いたのは、変数を3つ用意したことです。難しく聞こえるかもですが、役割はすごくシンプルです。
- ゲーム中:プレイ中かどうか(1=プレイ中、0=終わり)
- スコア:ベルを取った数
- 目標:何個でクリアにするか(今回は10)
「ゲーム中」を置いておくと、クリア後にベルが動き続けたり、スコアが増え続けたり…みたいな“わちゃわちゃ”を止められます。地味ですが、あとで助かります。

ベル側のプログラム(取ったらスコア+1、そして別の場所へ)
まずはベルのスプライトです。ベルって、ゲームの中だと「ごほうび」役ですよね。今回はこのベルが、取られるたびにどんどん逃げていきます。

最初の準備 旗が押されたとき
旗を押した瞬間に「ゲームのスタート準備」をします。
スコアを0にして、目標を10にして、ゲーム中を1にする。ここは“初期化”ですね。
それができたら、ベルの場所を決めます。
ベルの位置は、x座標だけランダムにして、y座標は -130に固定しました。
理由は単純で、今回は「横移動だけ」のゲームにしたかったからです。yまでランダムにすると、ベルが空中や変な場所に出て拾いにくくなることがあるんですよね。

ずっと見張る(これがないとスコアが増えません)
ここ、今回いちばんの学びポイントでした。
最初、私は「もし当たったらスコアを増やす」だけを書いて安心してたんですが、これだと 1回しか判定されないんです。
Scratchって、旗が押されたときの中身は基本「上から1回実行」なので、当たり判定も1回見て終わってしまいます。
だから、ベルがいつでも拾えるようにするには ずっと の中に「もし」を入れて、ずーっと見張らせます。

ベル側は流れとしてはこんなイメージです。
「ゲーム中が1なら、ネコが近づいたかチェックする。近づいたらスコアを増やして、ベルを別の場所へ移動する」
当たり判定は “xの距離” でシンプルにしました
今回の当たり判定は、あえて超シンプルにしています。
「ネコのx座標」と「ベルのx座標」の差の絶対値が 25 より小さかったら、拾ったことにする。
つまり “横方向で近づいたらOK” ってルールです。
ジャンプが無い(yが変わらない)うちは、最初の挑戦として楽しく遊べました。

「0.2秒待つ」がないと、スコアが一瞬で増えることがあります
ネコがベルに触れている(近い)状態って、意外と一瞬じゃないんですよね。
なので「近い判定」が連続で成立して、スコアが 1 → 2 → 3…と一気に増えることがあります。
それを防ぐために、拾った直後に 0.2秒待つ を入れました。
この一手で、スコアが “ちゃんと1ずつ増える” ようになって、かなりゲームっぽくなりました。

数字の体感メモ
ちなみに、ネコの移動は「10歩」にしましたが、うちの環境だと速すぎず遅すぎずでちょうどよかったです。
ベルの判定(絶対値<25)も、今のところ「取れない…」とか「離れてるのに取れた…」みたいな違和感は特にありませんでした。
もし遊んでみてズレが気になるときは、まずは 25を20〜30 の間で少しだけ調整してみるのがラクです。
ネコ側のプログラム(横移動と、クリア判定)
次はネコのスプライトです。こちらは「動く」と「クリアを判定する」の2本に分けました。

横移動(右・左キー)
右矢印で右へ、左矢印で左へ。
回転方法を「左右のみ」にしておくと、ネコが変な向きにならないので安心です。
ここは前回の横移動の延長なので、気持ちとしては「復習」みたいな感じでした。

目標に達したらクリア(ずっと見張る)
クリア判定は、ネコ側でずっと見張っています。
「スコアが目標になったら、ゲーム中を0にして、クリア!と言う」
これを入れておくと、ベル側も「ゲーム中が1のときだけ動く」ようになっているので、自然に止まってくれます。
ゲームとして“終わり”がちゃんと作れる感じがして、ここはかなり嬉しかったです。

うまくいかなかった話(スコアが増えない!)
今回、途中で「スコアが反応しない…」ってなって、ちょっと焦りました。
でも原因はシンプルで、当たり判定の「もし」が 1回しか実行されていなかったんです。
「旗が押されたとき」の下に「もし」だけ置いてしまうと、スタート直後の一瞬しか判定しません。
そこで、当たり判定を ずっと の中に入れる。
これで「いつ触れても拾える」状態になって、ちゃんとゲームになりました。

ここまでで、もう十分ゲームです
ジャンプを入れないとゲームっぽくないかな…と思ってたんですが、実際にやってみると、
ベルが出る → 取りに行く → スコアが増える → 目標でクリア!
この流れだけで、普通に楽しいです。
子どもと遊ぶなら、むしろこのくらいシンプルな方が「分かりやすい」かもしれません。
次回はここにジャンプを足して、もっとアクションっぽくしていきます。
まとめ
今回は、Scratchで「ベルを集める」ゲームを横移動だけで作ってみました。
ベルを取るたびにスコアが増えて、ベルは別の場所へ出現し続ける。
そして目標数でクリアになる。
特に「ずっとで当たり判定を見張る」と「0.2秒待つ」の2つが、今回のキモでした。
次回はジャンプを入れて、もう一段ゲームっぽくしていきます!
-
Scratchで「ベルを取ったらスコアが増える」を作る(横移動のみで)
記事がありません