「ボールがブロックに当たったら消える」

「敵に当たったらゲームオーバー」

「的に当たったら倒れる」

ゲームらしさは、こうした「当たったら〜」でぐっと生まれます。これを作るしくみが、当たり判定(あたりはんてい)です。

この記事では、Scratch(スクラッチ=ブロックを組み合わせてゲームを作る、子ども向けのプログラミング)の当たり判定を、わが家の7歳が作ったゲームの体験をもとに、やさしく説明します。

  • 当たり判定って、そもそも何?
  • 「触れたか」を調べる3種類のブロック
  • 「もし〜なら」と組み合わせて、当たったら得点・終了・落とすを作る
  • よくあるつまずきと直し方

※むずかしいブロックは親が手伝った部分もあります。「7歳が一人で全部作った」話ではなく、正直な体験記として読んでください。


当たり判定とは?──「ぶつかったか」を調べるしくみ

当たり判定とは、「あるものが、ほかのものや、決めた色・場所に触れたかどうか」をコンピューターが調べるしくみのことです。ゲームでは特に、「AとBがぶつかったか?」を調べるためによく使います。

わたしたちは、目で見れば「ぶつかった!」とすぐ分かります。でも、コンピューターは自分で「触れたか?」を調べて、はじめて「当たった」と分かります。この「触れたか?」を調べる部分が、当たり判定です。

  • ボールとブロック → 触れた? → 消す
  • 自分と敵 → 触れた? → ゲームオーバー
  • 玉と的 → 触れた? → 倒す

どれも、「触れたかを調べて → 何かを起こす」という同じ形をしています。


「触れたか」を調べる3種類のブロック

Scratchで「触れたか」を調べるブロックは、大きく3種類あります(水色の「調べる」グループにあります)。

ブロック何を調べる?よく使う場面
〈○○〉に触れたほかのスプライトやマウスに触れたか敵・アイテム・玉と的 など
〈色〉に触れた決めた色に触れたか地面・かべ・ゴールの色 など
〈色〉が〈色〉に触れた自分のある色が、別の色に触れたかキャラの一部だけ判定したいとき

いちばんよく使うのが、「〈○○〉に触れた」です。プルダウンから、相手のスプライトやマウスのポインター、画面の端を選べます。

💡 「スプライト」=Scratchのキャラクターや物のこと。ネコ・ボール・アイテムなど、動かせるものはみんなスプライトです。

「〈色〉に触れた」は、地面やかべを色でまとめて判定したいときに便利です。たとえば「緑の地面に触れたら止まる」のように使います。


「もし〜なら」と組み合わせる

当たり判定のブロックは、単体では何も起こりません。「触れた?」という質問に、「はい/いいえ」で答えるブロックだからです。

そこで、その答えを受けて動く「もし〜なら」(条件分岐)と組み合わせます。「もし〈触れた〉なら → ○○する」という形です。

ずっと
  もし <アイスに触れた> なら
    得点を 1 ずつ変える

さらに、ずっと調べ続けたいので、「ずっと」(くり返し)の中に入れます。こうすると、ゲームのあいだじゅう「触れた?」を調べ続け、触れた瞬間に反応します。

当たり判定の基本パターン
ずっと
↓
「触れた?」を調べる
↓
もし触れていたら
↓
何かをする(得点・終了・落とす…)

「もし〜なら」のしくみは【Scratchの条件分岐「もし〜なら」とは?】、「ずっと」などのくり返しは【Scratchの繰り返し(ループ)とは?】でくわしく説明しています。


体験:当たったら得点・終了・落とす

わが家では、同じ当たり判定を、いろいろなゲームで使ってきました。「触れた相手」と「起きること」を変えるだけで、まったくちがう遊びになります。

① 触れたら得点(アイス拾い)

落ちてくるアイスに触れたら、点が増えるゲームです。

  • もし〈アイスに触れた〉なら → 得点を1ふやす

数字が増えるのを見て、子どもは何度も遊んでいました。得点のしくみ(変数)は【Scratchの変数で得点をつける】でくわしく紹介しています。

② 触れたら終了(うんち避け)

同じゲームで、避けるものに当たったらゲームオーバーにしました。

  • もし〈うんちに触れた〉なら → ゲームを終わりにする

同じ「触れたか調べる」でも、相手によって起きることが変わる——ここが分かると、一気に「ゲームらしく」なります。

③ 当たったら落とす(射的ゲーム)

7歳が夏祭りの射的をゲームにしたとき、玉が的に当たったら、的が下に落ちるようにしました。

  • もし〈玉に触れた〉なら → y座標を下げる(下に落ちていく)

「当たったら消す」だけでなく、当たったら動かす(落とす)もできます。位置を動かすしくみ(座標)は【Scratchの座標(x・y)とは?】が参考になります。制作の様子は【Scratchで射的ゲームを作った】に書きました。


よくあるつまずきと直し方

当たり判定は、思ったとおりに反応しないことがよくあります。わが家でつまずいたものを中心に、直し方を紹介します。

つまずき① 何度も反応してしまう(重複判定)

「アイスを1個拾っただけなのに、得点が一気に増える」——これはとても多いつまずきです。

「ずっと」の中に入れていると、短い間隔で何度も「触れた?」を確認します。 そのため、少しの間でも重なっていると、その間くり返し「触れた!」と判定され、何度も反応してしまいます。

  • 直し方:触れたら、相手をすぐ動かす/消す(例:アイスを拾ったら、すぐ画面の上へ移動)。触れた瞬間に相手がいなくなるので、1回だけ反応します
  • クローンなら削除するのも手です。ゲームによっては「もう反応した?」を変数で覚えておく方法もあります(くわしくは変数の記事へ)

くわしい体験は【Scratchの変数で得点をつける】の「カウントが増えすぎる」で紹介しています。

つまずき② 見た目は当たっているのに反応しない

「〈○○〉に触れた」は、スプライトの絵そのものをもとに判定します。そのため、絵のまわりの透明な部分は基本的に判定に入りません。逆に、絵に見えない余白があると、当たっていないのに反応することもあります。

つまずき③ 「色に触れた」がうまくいかない

「〈色〉に触れた」は、指定した色を含む場所に触れたかを調べます。色が少しでもちがうと判定されないことがあり、逆に背景に似た色があると、思わぬところで反応することもあります。

  • 直し方:判定に使う色は、ほかで使っていないはっきりした色にすると安定します。色は、ブロックのスポイトで画面から選べます

どのブロックを使う?かんたん早見表

やりたいこと使うブロック
敵・アイテム・玉に当たったか〈相手のスプライト〉に触れた
マウスのポインターに触れたか〈マウスのポインター〉に触れた
画面の端に着いたか〈端〉に触れた
地面・かべ・ゴールを色で判定〈色〉に触れた
自分のある色が、相手の色に触れたか〈色〉が〈色〉に触れた

迷ったら、まずは「〈相手のスプライト〉に触れた」から。いちばん直感的で、つまずきも少ないです。


まとめ

  • 当たり判定=「あるものが、ほかのものや色・場所に触れたか」を調べるしくみ(ゲームでは主に「AとBがぶつかったか」)
  • 調べるブロックは3種類。基本は「〈○○〉に触れた」(相手・マウス・端を選べる)
  • 当たり判定は単体では何も起きない。「触れた?」にはい/いいえで答えるだけ。「もし〜なら」+「ずっと」と組み合わせる
  • 同じ当たり判定でも、相手と起きることを変えると、得点・終了・落とすなど何でも作れる
  • よくあるつまずきは、重複判定(相手をすぐ動かす)・透明な余白・色の指定

当たり判定が使えると、作れるゲームが一気に広がります。「当たったらどうする?」を子どもと一緒に考えるのは、とても楽しい時間です。まずは「〈相手〉に触れた」から、身近なゲームで試してみてください。

関連記事: