スプライト当たり判定方法その3 監視員型判定プログラム

この「監視員」型の当たり判定プログラムは、プログラムを作るために必要な情報、例えば「きっかけ」とか「ずっと」などの使い方が詰まっています。

読むだけでは一度では理解できないかもしれません。

この記事で紹介しているプログラムを一緒に作って、動かして、体験してみてください。そうしたら、感じはつかめると思います。

そして、お子さんに説明してみてください。羨望のまなざしになるかもです。

目標と所要時間

目標:「監視員」型当たり判定プログラムが作れるようになる
時間:15分

「監視員」型の当たり判定

長所

この「監視員」方法の長所は、

a.移動方向が複数でも1ブロックで判定できる
b.相手からぶつかってきても判定できる

具体的に説明すると、「事前に調べる」と「とりあえず動く」方法だと、「キーが押されたとき」のブロックひとつずつにぜーんぶ「触った」ブロックをつなげて判定を行わないといけないんです。

だから、左右に移動するなら、こんなふうに同じ判定ブロックが2組必要。

もし上下左右に加え、斜め移動もできたら、全部で8つも判定ブロックを書かないといけません。

さ、ら、に、自分だけじゃなく、相手(壁とかボールとか敵キャラ)も移動するときには、相手からもぶつかってきます。

そしたら、「自分が動くとき」では判定できません。判定できないの、他の方法で当たったことを調べなきゃいけません。

だけど、この「監視員」だと、移動方向が4方向だろうが、8方向だろうが、それこそ100方向でも、この一つの判定ブロックで判定できます。

あと、向こうからぶつかってきたときもこれで判定できるんです。

こんなふうに、この監視員のやり方は、非常に便利なんです。

完成プログラム

それでは、プログラムの説明をしていきます。

最初に、完成プログラムを見て、あなたも一緒にプログラムしてください。

そして、猫を左右に動かしてください。

どうなりましたか? 予定通り、猫が稲妻に当たったら、「痛!」って叫びましたか?

…素通り?

…猫が稲妻を素通りしたでしょ?

プログラムは間違ってないんですよ、ほんと!

「プログラムは間違えてないのに、なんで素通りするのぉ?!」という体験が非常に重要なので、必ず体験してください。お願いしますね。

肝は「フラグ」

それじゃ、次。プログラムはそのまんまで、ステージ右上の旗マーク(フラグアイコン)をクリックしてください。

フラグアイコンが明るい黄緑色に変わって、当たり判定のブロックには後光が差したみたいに、周辺が黄色っぽくなったのが分かりますか?

この状態で、もう一度、猫を左右に移動させてみてください。 今度はどうでしょう?

「痛!」って叫びましたか?

プログラムが動くきっかけ

「プログラムが動くためには、きっかけが必要」で詳しく説明しますが、ブロックを複数つなげた塊(私は「チーム」と呼びます)が働く(動く)ためには、必ず一番上に茶色のイベントブロックの中の上がこんもりした「〇〇とき」ブロックが必要です。

例えば、これまでに何度もプログラムしてもらった「キーを押したときに移動する」チームには、一番上に「〇〇向き矢印キーが押されたとき」ブロックがありますよね。

このチームは、「右向き矢印キーが押された」ことを「きっかけ」にして、動き出すのです。

それじゃ、完成プログラムをもう一度みてください。一番上にはどんな「〇〇とき」ブロックがあるでしょうか?

そう、「フラグがクリックされたとき」ブロックがあります!!

このように、チームの一番上には、チームが動き出す「きっかけ」ブロックが必要です。

それじゃぁ、判定ブロック(「もし<>なら」ブロック)の上に、「フラグがクリックされたとき」をくっつければ完成!

とはいかないんです。これが残念ながら。

実際に、「フラグがクリックされたとき」ブロックをつなげて、動作を体験してみましょう。

プログラムを書いてから、ステージ右上の「フラグ」アイコンをクリックしてください。

どうなりましたか?

実行されるのは1度だけ

「フラグ」アイコンをクリックしたとき、一瞬「フラグがクリックされたとき」組に後光が差して、すぐ消えます。その後、猫を左右に動かして稲妻と当たっても、素通りするだけ。

これは、「フラグ」をクリックしたときに、1度だけ「猫が稲妻(Lightning)と触れた」かどうか判定して、このチームの働き(動作)が終わってしまったからなんです。

??? という方は、「右向き矢印キーが押されたとき」チームを見てください。

このチームは「右キーを押すと 猫が10歩動く」動作をするチームですが、右キーを1回を押すと、10歩動くんです。

重要だから、もう一度言いますね。

右キーを「1回」を押すと、「10歩」動くんです。

なので、20歩動かしたいときには、「10歩動かす」を2回実行するために、右キーを2回押す必要があります。

つまり、右キーを1回押すと、このブロックにつながっている下のブロック(チーム)の動作が「1度だけ」実行されるんです。

同じように、「フラグがクリックされたとき」チームも、フラグがクリックされたら、直後に「1度だけ」実行されます。つまり、一度だけ「猫と稲妻が触れたか」どうかを判定するんです。

だから、フラグをクリックした後に猫を動かしても、判定チームの動作はすでに終わっているので、「痛!」とは叫ばないんです。

では、どうすればいいでしょうか?

「ずっと」ブロックのお出まし

こんなときに登場するのが、「制御」スクリプトの中にある「ずっと」ブロック。

どういう動きをするかを、説明じゃなく、体感してもらいましょう。

「右矢印キー」チームに、図のように「ずっと」ブロックを挿し込んでください。

そして、右キーを押してみてください。どうなりましたか?

一度右キーを押すと、猫が右端まで移動し続けましたか? そして、「右矢印向きキー」チームにずっと後光が差して、「フラグ」が黄緑色になってませんか?

そして、左キーを押しても、動てるのか動いていないのか、よく分からない状態になっていませんか?

このままでは何もできないので、とりあえず「フラグ」アイコンの右横の「赤丸」アイコンを押してください。

すると、「フラグ」が濃緑色になって、後光が消えます。

どうでしょうか? どんな動きをしているか、あなたは想像できたでしょうか?

この「ずっと」ブロックは、右キーが押されて一度動きだすと、あなたが赤丸アイコンを押すまで、「ずっと」ブロックの間にあるブロックの動作を続けるんです。

誰かが止めるまで、ずーーーーと、繰り返し繰り返し動き続けるんです。

ちなみに、この動きを無限ループとか、無限繰り返しと呼んだりします。

ずっと判定する

実際、子供達がケガしないように注意しなければいけないときには、「ずっと」見渡してますよね、遊ぶのが終わるまで。

それと同じで、この「監視員」型の当たり判定プログラムも、プログラムが動いている間は「ずっと」判定し続ける必要があります。あなたがプログラムを止めるまで。

というわけで、猫が稲妻に触れたかどうかを「ずっと」判定するように、「ずっと」ブロックを組み込んでみましょう。

これが完成図です。

あなたの Scrachでも同じプログラムを作り終わったら、早速「フラグ」アイコンをクリックしてから、猫を左右に移動してみてください。

どうですか? あなたが赤丸アイコンを押すまで、「猫と稲妻が触れたか」をずっと判定し続けてくれましたか?

次回の予告

関連記事

スポンサーリンク

コメント

タイトルとURLをコピーしました