スクラッチでキャラクターどうしの当たり判定をプログラムする方法

Scratch(スクラッチ)の当たり判定の作り方を解説。敵に当たったらゲームオーバー、弾が敵に当たったら消える仕組み、色による判定まで、小学生・中学生の子ども向けにわかりやすく紹介します。

お子様
お子様
スクラッチで敵に当たったらゲームオーバーにしたいけど、どうやってプログラムするの?
お教えしましょう
ごとう先生
ごとう先生

ゲームには「当たり判定」といって、キャラクター同士がぶつかったときに、敵を倒せたり、反対にダメージをもらったりする仕組みがあります。

これをプログラミングするためには、「AとBがぶつかった」という情報を知る必要があります。

この記事では小学生中学生のお子様向けに、スクラッチのゲーム制作での「当たり判定」の基本から、ゲームへの応用まで解説します!


▼楽しく学べるプログラミング体験なら「アンズテック」
お子様にプログラミングを楽しく学ばせたいとお考えの保護者様に、アンズテックのオンラインレッスンがおすすめです。まずは、無料体験レッスンにお申込みください。

▼ アンズテックについて詳しく知りたい方はこちら
>> 「アンズテック」の公式サイトを確認する

アンズテック公式サイトへ

当たり判定とは?

当たり判定とは「2つのキャラクターがぶつかったことを知らせる仕組み」のことです。

たとえば…

  • 主人公が敵にぶつかった → ゲームオーバーになる
  • 発射した弾が敵にぶつかった → 敵が消える
  • 主人公がコインを取った → スコアが増える

こういった機能を実現するのが「当たり判定」です。
ゲームをプログラミングするうえでは必須の機能ですね。

まずは基本の「〇〇に触れた」ブロック

Scratchでは「調べる」カテゴリにある「〇〇に触れた」ブロックを使います。

もし 敵 に触れた なら
  「ゲームオーバー!」と言う
  すべてを止める
終わり

「〇〇」の部分には、スプライトの名前マウスポインターを選べます。

「敵に当たったらゲームオーバー」のスクラッチプログラム例

最もよく使うスクラッチでの当たり判定です。
主人公のスプライトに、以下のようなプログラムを入れます。

緑の旗が押されたとき
ずっと

  もし 右向き矢印キーが押された なら
    x座標を(10)ずつ変える
  終わり
  もし 左向き矢印キーが押された なら
    x座標を(-10)ずつ変える
  終わり

  【当たり判定】
  もし 敵 に触れた なら
    「ゲームオーバー!」と言う
    すべてを止める
  終わり

終わり

「ずっと」ブロックの中にプログラムを作るように注意してください!

弾が敵に当たったら敵を消すプログラム例

次はスクラッチでも人気のシューティングゲームでよく使うプログラムの例です。

弾のスプライトにこのようなプログラムを入れます。

スペースキーが押されたとき
自分自身 のクローンを作る
---
クローンされたとき
[主人公] へ行く
ずっと

  x座標を(10)ずつ変える     ← 右に弾が飛んでいく

  もし 敵 に触れた なら
    [あたった] を送る               ← 敵側のプログラムで敵を消す
    このクローンを削除する
  終わり

  もし 端 に触れた なら
    このクローンを削除する
  終わり

終わり

色による当たり判定

スクラッチでは、スプライト全体ではなく「特定の色」に触れたことを調べることもできます。

手書きのアイテムや、迷路の壁、ジャンプしたときの床の判定などによく使われます。

もし 赤色 に触れた なら
  x座標を 0 、y座標を 0 にする
  「スタートに戻った!」と[2]秒言う
終わり

「赤色」の部分はカラーピッカーで色を選びましょう。
かんぺきに同じ色でないと反応しないので、注意してください。

よくある失敗例

当たっているのに何も起こらない

スプライトの名前が間違っている可能性があります。
「〇〇に触れた」の「〇〇」が実際のスプライト名と同じになっているか確認しましょう。

当たっていないのに当たり判定が反応してしまう

白背景の画像をつかっていたりする場合に、見た目では当たっていないのに、プログラム上では当たっていると判定がされることがあります。
スプライトを調整するか、「色に触れた」を使って調整しましょう。

プログラムは合っているのに反応しない

「ずっと」ブロックの中にいれるのを忘れていませんか?
例えば「緑の旗が押されたとき」のすぐ下に「もし〇〇に触れたら…」としていると、緑の旗が瞬間しか当たり判定のチェックがされなくなります。
基本的には「ずっと」の中に当たり判定をいれましょう。

まとめ

この記事で紹介したスクラッチの当たり判定のポイントをおさらいしましょう。

  • スクラッチの当たり判定は「調べる」カテゴリの「〇〇に触れた」ブロックでつくれる
  • 「〇〇に触れた」ブロックは「もし〜なら」ブロックと組み合わせて使う
  • 「ずっと」の中に入れることで常にチェックされる
  • 色による判定(「〇〇色に触れた」)で壁や床の当たり判定もできる
  • 当たったときの処理(隠す・移動・スコア変更など)を組み合わせて使う

スクラッチの当たり判定をおぼえると、一気にゲームで作れる機能の幅が広がります。
ぜひ、プログラムの作り方をおぼえて、お子様と一緒に楽しいゲームプログラミングを始めましょう!

アンズテックでスクラッチを本格的に学ぼう

当たり判定以外にもスクラッチで覚えておきたいプログラムはたくさんあります。

アンズテックでは小学生中学生のお子様向けに、現役プログラマーが一対一でゲームプログラミングの学習をサポートします。

ゲームプログラミングに興味のあるお子様や保護者様はぜひ一度アンズテックのプログラミング無料体験レッスンへお越しください!

アンズテック子どもプログラミング教室

プログラミング講師 / プログラマー 指導歴9年

アンズテックは、小中学生向けの完全オンラインプログラミングスクールです。ScratchやUnityを使い、子どもの興味に合わせた楽しいカリキュラムで、創造力・思考力・ITスキルを育みます。全国どこからでも現役プログラマーの受講が可能!

222本の記事を執筆

NEWS一覧へ