06タコス好きなゴーストを動かそう 【4限目】ゴーストがコウモリに触れたかどうか判定しよう

投稿者:クマガイモトツグ
公開日  最終更新日2019/06/26
profile
ENYキッズプログラミングスクール校長 マーケティングエンジニア デザイナー イラストレーター 料理人
小中高校生向けプログラミング教育、MA/マーケティングオートメーションを使ったWEBコンサルティングをはじめ、WEB/アプリのデザイン・開発に従事している

著書「親子で学べる いちばんやさしいプログラミング おうちでスタートBOOK」
「MA/マーケティングオートメーション 5分でできるMA導入と成功する8つのプロセス」
このページを印刷、配布用のファイル(PDF)として保存することができます。
ダウンロードしたデータは教材としてもお使いいただけます。
このページを シェア して
印刷用データ(PDF)をダウンロード

当たり判定とは?

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

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

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タコス好きなゴーストを動かそう」授業一覧
▲ TOP