【4限目】ゴーストがコウモリに触れたかどうか判定しよう

投稿者:クマガイモトツグ
公開日  最終更新日2019/06/26

profile
TechKidzACADEMY代表 プログラミングインストラクター デザイナー 料理人
小中高校生向けプログラミング教育、教材の開発、企業研修ほか、WEB/アプリのデザイン・開発に従事している
著書に「小学校6年生までに必要なプログラミング的思考力が1冊でしっかり身につく本」「親子で学べる いちばんやさしいプログラミング おうちでスタートBOOK」Amazon1位、 「MA/マーケティングオートメーション 5分でできるMA導入と成功する8つのプロセス」Amazon1位がある

当たり判定とは?

ゲームをつくるとき「当たり判定」という言葉がよく使われます。

例えばシューティングゲームでいうと、うごかしている戦闘機が敵のミサイルにあたったかどうかを判定するのが「当たり判定」です。

Scratch(スクラッチ)ではスプライトとスプライトが当たった(触れた)かどうか判定するのに(「当たり判定」するのに)便利なブロックがあります。
今回はその「当たり判定」ブロックを使っていきます。

今から作るプログラムは次の2つです。

2-9.ゴーストがコウモリにふれたら「ひゃー」という
2-10.ゴーストがタコスにふれたら「いただきます!」という

2-9をさらにブロック単位で分解していきます。

2-9-1.ゴーストがコウモリにふれたかどうか判定
2-9-2.もしゴーストがコウモリにふれていたら「ひゃー」という
(ふれていなかったら何もしない)

ゴーストとコウモリの当たり判定プログラム

「当たり判定」するには 調べる 「マウスポインターに触れた」ブロックを使います。

今回は「コウモリに触れたら」ということなので、
「マウスポインター」のとなりにある▼をクリックして、コウモリのスプライト名「Bat」を選びます。

Scratch(スクラッチ)Batに触れたブロック

この「〜に触れた」ブロックは、「当たり判定」をする条件を示すブロックになります。
ですので、この「当たり判定」するブロックはこれだけ単独ではうごきません。
判定するときは「もし〜だったら」というブロックと組み合わせて使います。

「2-9-2.もしゴーストがコウモリにふれていたら「ひゃー」という」 というプログラムですが
「もし〜だったら」という風にかかれていますよね。

やりたいことに、「もし」がつくときは 制御 の 「もし< >なら」 というブロックを使います。
これを条件分岐といったりします。プログラムでよくつかわれる考え方です。
やりたいことをブロックに分解していくときには、「もし」をつけて表現できるか考えてみてください。

「もし< >なら」のブロックについて、図をつかって説明しましょう。
空いているスペースにいれるブロックの種類が違うことに注意してください。

Scratch(スクラッチ)の条件判定ブロック

ブロックの言葉と形でなんとなくわかるかもしれませんが、「条件」のブロックと、条件にあったとき「実行する」ブロックの2種類のブロックをいれて完成します。

ということで以下のプログラムですが

2-9-1.ゴーストがコウモリにふれたかどうか判定
2-9-2.もしゴーストがコウモリにふれていたら「ひゃー」という
(ふれていなかったら何もしない)

こんな形になります。

Scratch(スクラッチ)Batにふれたらひゃーという

「ひゃー」とセリフを言わせるブロックは今までにやったことあるのでわかりますね。

これと同じように次のプログラムも作ることができます。

2-10.ゴーストがタコスにふれたら「いただきます!」という

Scratch(スクラッチ)のTacoに触れたらいただきます!

当たり判定プログラムがうごくためには?

それではをクリックして実行してみてください。
ゴーストがコウモリやタコスにふれても何にもセリフを言わないですよね。

実は当たっているかを判定するブロックは、ゲームがはじまったら、「ずーっと」実行していないと当たった瞬間に判定をしてくれないんですね。

常にチェック(当たっているか判定)しないといけないようなプログラムは「ずっと」ブロックをつかって、ゲームが始まったらずっと実行しておく必要があります。

ですので、制御 のところから 「ずっと」ブロックを持ってきて、さきほどつくった2つの「もし〜なら」ブロックを「ずっと」ブロックの中にいれてください。

こんな感じです。

Scratch(スクラッチ)のセリフをいうブロックをずっとの中に入れる

ゲームが開始されたら、この「ずっと」のブロック群を実行すればいいので、「が押されたとき」のブロックを一番上にくっつけます。

Scratch(スクラッチ)旗がクリックされたらずっと繰り返す

あと足りないのは?

これでほぼ完成です。
「ほぼ」といったのは、アルゴリズムで書いていない部分があるからです。
気づいている人は気づいているかもしれませんが、2回目ゲームをやろうとすると、ゴーストが左上に行ってくれません。
かならずゲームスタート時にゴーストが左上に行ってくれないと、ゲームとして成り立ちません。

ですので、ゲームスタート時にゴーストを左上に瞬間移動させるプログラムを組む必要があります。

今までやってきた通り、座標を使います。

もうできますよね。

答えはこれです。(座標の位置は好きな位置にしてください。ランダムでも面白いかもしれません)

Scratch(スクラッチ)ゴーストを左上にもっていく

いかがだったでしょうか?
かなりゲームらしい作品ができたと思います。
これにスコアや制限時間などをつけるとさらにゲームとしての完成度が高まります。
このやり方については、また別の授業でお話しします。

「06タコス好きなゴーストを動かそう」授業一覧
当スクールは出版、各種メディア・企業様に、学習コンテンツ等の提供を行なっております。 プログラミング教育コンテンツは対馬市の教育委員会に認定され対馬市の全小学校で採用されました。
全国書店にて発売中!
2022年夏開校 オンラインスクール
オンラインでプログラミングを本格的に学べます。
学習塾・学校関係者様
副業・起業されたい方
プログラミングは簡単
プログラミング教材で採用されたTechKidzACADMEY
当スクールは出版、各種メディア・企業様に、プログラミング教材・コンテンツ等の提供を行なっております。 プログラミング教育コンテンツは対馬市の教育委員会に認定され対馬市の全小学校で採用されました。
paiza株式会社
このサイトはスクラッチ(SCRATCH)を使ったプログラミング学習のためのサイトです。スクラッチの使い方からゲームの作り方まで様々な内容をお伝えします。

▲ PAGE TOP