Scratchの当たり判定とは?「触れたら〜」の作り方
「ボールがブロックに当たったら消える」
「敵に当たったらゲームオーバー」
「的に当たったら倒れる」
ゲームらしさは、こうした「当たったら〜」でぐっと生まれます。これを作るしくみが、当たり判定(あたりはんてい)です。
この記事では、Scratch(スクラッチ=ブロックを組み合わせてゲームを作る、子ども向けのプログラミング)の当たり判定を、わが家の7歳が作ったゲームの体験をもとに、やさしく説明します。
- 当たり判定って、そもそも何?
- 「触れたか」を調べる3種類のブロック
- 「もし〜なら」と組み合わせて、当たったら得点・終了・落とすを作る
- よくあるつまずきと直し方
※むずかしいブロックは親が手伝った部分もあります。「7歳が一人で全部作った」話ではなく、正直な体験記として読んでください。
当たり判定とは?──「ぶつかったか」を調べるしくみ
当たり判定とは、「あるものが、ほかのものや、決めた色・場所に触れたかどうか」をコンピューターが調べるしくみのことです。ゲームでは特に、「AとBがぶつかったか?」を調べるためによく使います。
わたしたちは、目で見れば「ぶつかった!」とすぐ分かります。でも、コンピューターは自分で「触れたか?」を調べて、はじめて「当たった」と分かります。この「触れたか?」を調べる部分が、当たり判定です。
- ボールとブロック → 触れた? → 消す
- 自分と敵 → 触れた? → ゲームオーバー
- 玉と的 → 触れた? → 倒す
どれも、「触れたかを調べて → 何かを起こす」という同じ形をしています。
「触れたか」を調べる3種類のブロック
Scratchで「触れたか」を調べるブロックは、大きく3種類あります(水色の「調べる」グループにあります)。
| ブロック | 何を調べる? | よく使う場面 |
|---|---|---|
| 〈○○〉に触れた | ほかのスプライトやマウスに触れたか | 敵・アイテム・玉と的 など |
| 〈色〉に触れた | 決めた色に触れたか | 地面・かべ・ゴールの色 など |
| 〈色〉が〈色〉に触れた | 自分のある色が、別の色に触れたか | キャラの一部だけ判定したいとき |
いちばんよく使うのが、「〈○○〉に触れた」です。プルダウンから、相手のスプライトやマウスのポインター、画面の端を選べます。
💡 「スプライト」=Scratchのキャラクターや物のこと。ネコ・ボール・アイテムなど、動かせるものはみんなスプライトです。
「〈色〉に触れた」は、地面やかべを色でまとめて判定したいときに便利です。たとえば「緑の地面に触れたら止まる」のように使います。
「もし〜なら」と組み合わせる
当たり判定のブロックは、単体では何も起こりません。「触れた?」という質問に、「はい/いいえ」で答えるブロックだからです。
そこで、その答えを受けて動く「もし〜なら」(条件分岐)と組み合わせます。「もし〈触れた〉なら → ○○する」という形です。
ずっと
もし <アイスに触れた> なら
得点を 1 ずつ変える
さらに、ずっと調べ続けたいので、「ずっと」(くり返し)の中に入れます。こうすると、ゲームのあいだじゅう「触れた?」を調べ続け、触れた瞬間に反応します。
ずっと
↓
「触れた?」を調べる
↓
もし触れていたら
↓
何かをする(得点・終了・落とす…)
「もし〜なら」のしくみは【Scratchの条件分岐「もし〜なら」とは?】、「ずっと」などのくり返しは【Scratchの繰り返し(ループ)とは?】でくわしく説明しています。
体験:当たったら得点・終了・落とす
わが家では、同じ当たり判定を、いろいろなゲームで使ってきました。「触れた相手」と「起きること」を変えるだけで、まったくちがう遊びになります。
① 触れたら得点(アイス拾い)
落ちてくるアイスに触れたら、点が増えるゲームです。
- もし〈アイスに触れた〉なら → 得点を1ふやす
数字が増えるのを見て、子どもは何度も遊んでいました。得点のしくみ(変数)は【Scratchの変数で得点をつける】でくわしく紹介しています。
② 触れたら終了(うんち避け)
同じゲームで、避けるものに当たったらゲームオーバーにしました。
- もし〈うんちに触れた〉なら → ゲームを終わりにする
同じ「触れたか調べる」でも、相手によって起きることが変わる——ここが分かると、一気に「ゲームらしく」なります。
③ 当たったら落とす(射的ゲーム)
7歳が夏祭りの射的をゲームにしたとき、玉が的に当たったら、的が下に落ちるようにしました。
- もし〈玉に触れた〉なら → y座標を下げる(下に落ちていく)
「当たったら消す」だけでなく、当たったら動かす(落とす)もできます。位置を動かすしくみ(座標)は【Scratchの座標(x・y)とは?】が参考になります。制作の様子は【Scratchで射的ゲームを作った】に書きました。
よくあるつまずきと直し方
当たり判定は、思ったとおりに反応しないことがよくあります。わが家でつまずいたものを中心に、直し方を紹介します。
つまずき① 何度も反応してしまう(重複判定)
「アイスを1個拾っただけなのに、得点が一気に増える」——これはとても多いつまずきです。
「ずっと」の中に入れていると、短い間隔で何度も「触れた?」を確認します。 そのため、少しの間でも重なっていると、その間くり返し「触れた!」と判定され、何度も反応してしまいます。
- 直し方:触れたら、相手をすぐ動かす/消す(例:アイスを拾ったら、すぐ画面の上へ移動)。触れた瞬間に相手がいなくなるので、1回だけ反応します
- クローンなら削除するのも手です。ゲームによっては「もう反応した?」を変数で覚えておく方法もあります(くわしくは変数の記事へ)
くわしい体験は【Scratchの変数で得点をつける】の「カウントが増えすぎる」で紹介しています。
つまずき② 見た目は当たっているのに反応しない
「〈○○〉に触れた」は、スプライトの絵そのものをもとに判定します。そのため、絵のまわりの透明な部分は基本的に判定に入りません。逆に、絵に見えない余白があると、当たっていないのに反応することもあります。
- 直し方:ペイントエディターで、コスチュームの絵の位置や大きさを整え、余白なく描くとズレが減ります。見た目を整えるコツは【Scratchのペイントエディターでキャラを自作しよう】もどうぞ
つまずき③ 「色に触れた」がうまくいかない
「〈色〉に触れた」は、指定した色を含む場所に触れたかを調べます。色が少しでもちがうと判定されないことがあり、逆に背景に似た色があると、思わぬところで反応することもあります。
- 直し方:判定に使う色は、ほかで使っていないはっきりした色にすると安定します。色は、ブロックのスポイトで画面から選べます
どのブロックを使う?かんたん早見表
| やりたいこと | 使うブロック |
|---|---|
| 敵・アイテム・玉に当たったか | 〈相手のスプライト〉に触れた |
| マウスのポインターに触れたか | 〈マウスのポインター〉に触れた |
| 画面の端に着いたか | 〈端〉に触れた |
| 地面・かべ・ゴールを色で判定 | 〈色〉に触れた |
| 自分のある色が、相手の色に触れたか | 〈色〉が〈色〉に触れた |
迷ったら、まずは「〈相手のスプライト〉に触れた」から。いちばん直感的で、つまずきも少ないです。
まとめ
- 当たり判定=「あるものが、ほかのものや色・場所に触れたか」を調べるしくみ(ゲームでは主に「AとBがぶつかったか」)
- 調べるブロックは3種類。基本は「〈○○〉に触れた」(相手・マウス・端を選べる)
- 当たり判定は単体では何も起きない。「触れた?」にはい/いいえで答えるだけ。「もし〜なら」+「ずっと」と組み合わせる
- 同じ当たり判定でも、相手と起きることを変えると、得点・終了・落とすなど何でも作れる
- よくあるつまずきは、重複判定(相手をすぐ動かす)・透明な余白・色の指定
当たり判定が使えると、作れるゲームが一気に広がります。「当たったらどうする?」を子どもと一緒に考えるのは、とても楽しい時間です。まずは「〈相手〉に触れた」から、身近なゲームで試してみてください。
関連記事:
- Scratchの条件分岐「もし〜なら」とは?使い方をやさしく(「もし〈触れた〉なら」の土台になるしくみ)
- Scratchの変数で得点をつける|6歳のゲームで体験(当たり判定で得点を増やす・重複判定の直し方)
- Scratchで射的ゲームを作った|7歳の「作りたい」制作記(「当たったら落とす」を実際に使った制作記)
- Scratchの座標(x・y)とは?キャラの位置の決め方(「当たったら動かす・落とす」で使う位置のしくみ)