【4限目】ゴーストがコウモリに触れたかどうか判定しよう
当たり判定とは?
ゲームをつくるとき「当たり判定」という言葉がよく使われます。
例えばシューティングゲームでいうと、うごかしている戦闘機が敵のミサイルにあたったかどうかを判定するのが「当たり判定」です。
Scratch(スクラッチ)ではスプライトとスプライトが当たった(触れた)かどうか判定するのに(「当たり判定」するのに)便利なブロックがあります。
今回はその「当たり判定」ブロックを使っていきます。
今から作るプログラムは次の2つです。
2-10.ゴーストがタコスにふれたら「いただきます!」という
2-9をさらにブロック単位で分解していきます。
2-9-2.もしゴーストがコウモリにふれていたら「ひゃー」という
(ふれていなかったら何もしない)
ゴーストとコウモリの当たり判定プログラム
「当たり判定」するには ●調べる 「マウスポインターに触れた」ブロックを使います。
今回は「コウモリに触れたら」ということなので、
「マウスポインター」のとなりにある▼をクリックして、コウモリのスプライト名「Bat」を選びます。
この「〜に触れた」ブロックは、「当たり判定」をする条件を示すブロックになります。
ですので、この「当たり判定」するブロックはこれだけ単独ではうごきません。
判定するときは「もし〜だったら」というブロックと組み合わせて使います。
「2-9-2.もしゴーストがコウモリにふれていたら「ひゃー」という」 というプログラムですが
「もし〜だったら」という風にかかれていますよね。
やりたいことに、「もし」がつくときは ●制御 の 「もし< >なら」 というブロックを使います。
これを条件分岐といったりします。プログラムでよくつかわれる考え方です。
やりたいことをブロックに分解していくときには、「もし」をつけて表現できるか考えてみてください。
「もし< >なら」のブロックについて、図をつかって説明しましょう。
空いているスペースにいれるブロックの種類が違うことに注意してください。
ブロックの言葉と形でなんとなくわかるかもしれませんが、「条件」のブロックと、条件にあったとき「実行する」ブロックの2種類のブロックをいれて完成します。
ということで以下のプログラムですが
2-9-2.もしゴーストがコウモリにふれていたら「ひゃー」という
(ふれていなかったら何もしない)
こんな形になります。
「ひゃー」とセリフを言わせるブロックは今までにやったことあるのでわかりますね。
これと同じように次のプログラムも作ることができます。
当たり判定プログラムがうごくためには?
それではをクリックして実行してみてください。
ゴーストがコウモリやタコスにふれても何にもセリフを言わないですよね。
実は当たっているかを判定するブロックは、ゲームがはじまったら、「ずーっと」実行していないと当たった瞬間に判定をしてくれないんですね。
常にチェック(当たっているか判定)しないといけないようなプログラムは「ずっと」ブロックをつかって、ゲームが始まったらずっと実行しておく必要があります。
ですので、●制御 のところから 「ずっと」ブロックを持ってきて、さきほどつくった2つの「もし〜なら」ブロックを「ずっと」ブロックの中にいれてください。
こんな感じです。
ゲームが開始されたら、この「ずっと」のブロック群を実行すればいいので、「が押されたとき」のブロックを一番上にくっつけます。
あと足りないのは?
これでほぼ完成です。
「ほぼ」といったのは、アルゴリズムで書いていない部分があるからです。
気づいている人は気づいているかもしれませんが、2回目ゲームをやろうとすると、ゴーストが左上に行ってくれません。
かならずゲームスタート時にゴーストが左上に行ってくれないと、ゲームとして成り立ちません。
ですので、ゲームスタート時にゴーストを左上に瞬間移動させるプログラムを組む必要があります。
今までやってきた通り、座標を使います。
もうできますよね。
答えはこれです。(座標の位置は好きな位置にしてください。ランダムでも面白いかもしれません)
いかがだったでしょうか?
かなりゲームらしい作品ができたと思います。
これにスコアや制限時間などをつけるとさらにゲームとしての完成度が高まります。
このやり方については、また別の授業でお話しします。
- 【1限目】ゲーム画面をつくりあげよう
- 【2限目】タコス好きなゴーストのゲームのアルゴリズムを考えよう
- 【3限目】ゴーストをうごかそう!
- 【4限目】ゴーストがコウモリに触れたかどうか判定しよう 今ここです