ゲームでは必須の「何かに当たったら△△△△する」を実現するには、「〇〇に触れた」ブロックを使えばいいことは、Scratchで猫が稲妻に当たったら「痛!」と叫ぶ判定処理プログラムで体験してもらいました。
ただ、体験・基礎編ということで、「どのように」ブロックを使えばいいか、なんであのようにプログラミングするのかについては何も説明しませんでした。
そこで、これから4回に分けて、当たり判定のプログラミングのやり方・仕組みについて「説明」していこうと思います。
まず、今回で当たり判定プログラムの3つのイメージについてお伝えします。その後、それぞれの仕組みについて、仕組みとプログラムを説明していきます。
マスターすれば、お子さんからの「なんで?」に答えられるようになりますよ!
体験だけじゃなく、プログラミング講座っぽくなってきたでしょ?
当たり判定は3種類
当たり判定のやり方(仕組み)は大きく3つ。
例えば、右キーが押される毎に、猫が右側にある壁に向かってどんどん進んでいって、壁に当たる、という場合をイメージしてください。
このときの当たり判定のやり方は、
1.進もうとする位置に壁があるかどうかを調べて判定する
2.とりあえず一歩動かしてみて、壁に当たったかどうか判定する
3.全体を見渡す監視員がいて、「あっ!あそこでぶつかった!」と判定する
の3種類になります。
1.先に調べる
生活の場面で移動するときには、動く前に目の前に壁や障害物がないかどうか確認してから動きますよね?
なので、この当たり判定のやり方は、すぐにイメージできるのではないでしょうか?
た、だ、し、このやり方のプログラミングは実は難しい、というかちょっとハードルが高いんです。あと、パソコンの性能が凄く高くなったこともあり、最近はあまり使われません。
詳しくは、「当たり判定1 先に調べる」(作成中)で、ご紹介する予定です。
2.とりあえず
猫が水たまりにハマって「冷た!」と叫ぶ場合をイメージしてみてください。
キーが押されたら、とりあえず猫を移動させて、猫と水たまりが触れたかを判定する、というやり方があります。
で、壁みたいに「めり込んじゃいけない」障害物では、「当たった後」に、「一歩戻す」ことによって、めり込むのを避ける。
ボーンと当たって、一歩後ずさり、こんな感じです。イメージできたでしょうか?
詳しい説明は、「当たり判定2 とりあえず移動する」(作成中)で行います。
3.監視員
上の「さきに調べる」、「とりあえず動かす」方法は、キーが押されて、主人公の猫を移動させるときに判定する方法です。
なので、猫は止まっていて、壁や水たまりが猫に向かって移動してきて当たる場合は、これら2つの方法では当たり判定できないんです。
そんなときに、この「監視員」のやり方が効果的なんです。
ちょっと、学校の運動場でお子さんが遊んでいる姿を想像してください。
そして、あなたは保護者として、子供たちが安全に遊んでいるかを見張る監視員役です。
監視員で少し離れたところから見ていると、子供達がぶつかってしまうのを見つけることができますよね。
この「監視員」は、少し離れたところから「当たる」のを見つける=判定する方法です。
コメント