2024.01.31ブログ
小学生がスクラッチでシューティングゲームを作る2つのステップ(プレイヤーと敵の当たり判定を作る)
皆さん、こんにちは!タイムレスエデュケーションの日高です。前回と前々回の記事では、プレイヤーのネコと敵のドラゴンの動きを作りました。今回の記事では、敵にたまが当たった時の処理や、ネコが敵に当たった時の処理などを追加します。一緒に、作り上げていきましょう!
ステップ1:たまに当たった時の動作を作る
まずは、ネコから発射されるたまが、ドラゴンに命中した時の動きを作っていきたいと思います。たまに当たった時は、ドラゴンが倒されて消えるようにしたいです。また、その後にドラゴンがいなくなってしまうと面白くないので、新たなドラゴンが出て来るようにしたいです。それでは早速、次のようにして作っていきましょう!
ドラゴンが倒される時の条件は、「たまがドラゴンに当たる」です。これを判定するためには、「調べる」のカテゴリにある、「○○に触れた」というブロックを使います。このブロックの選択肢の中から「たま」を選んでください。そして、たまがドラゴンに当たった時の動作を書きます。今回は、ドラゴンにたまが当たったら、音が出て消えるようにします。音は、音のライブラリの中から選びましょう!ここの例では、「Alien Creak2」という音を選びました。そして新たに敵を作る方法ですが、もう1度画面の右端からドラゴンが現れるようにします。通常の処理では、ドラゴンが左端まで動いた後は、再び右端から出現するようになっていますね。なので、ドラゴンを強制的に左端まで飛ばし、通常の流れで再度右から出現させるようにします。プログラムの作り方は、以下のようになります!
ずっと繰り返す
たまに触れるまでまつ
たまに触れたら、音を出す
隠す
ドラゴンのx座標を-240にする(強制的に左端に飛ばす)
これで想定した挙動になりますが、敵を倒した時にスコアを増やしたいので、これに更に追加します!
ずっと繰り返す
たまに触れるまでまつ
たまに触れたら、スコアを1たす
音を出す
隠す
ドラゴンのx座標を-240にする(強制的に左端に飛ばす)
これをドラゴンのプログラムとして作ると、次の図のようになりますね!
ステップ2:敵の攻撃を作る
次に、敵のドラゴンが攻撃する動きを作ります。ドラゴンの攻撃は、同じようにたまを撃ってくるようにしたいと思います。既にネコのたまの動きを作っているので、それと同じように作ることになります。まず、「たま」をコピーして「敵のたま」を作ります。コピーするためには、図に示すようにコピーしたい対象のスプライトを選び、右クリックします。このように操作するとメニューが表示されて「複製」という項目が出て来るので、そちらを選びます。そうすると、右の図に示すように同じ絵のスプライトが出現します。ここでは、名前を敵のたまに変更しています。(図はスプライト名を変えた後の図)
その後、敵のたまの動きをいくつか変更する必要があります。
出現する条件
ネコのたまは、スペースキーを押した時に発射されました。敵のたまは自動的に発射して欲しいので、この条件を変えます。ランダムに決めたある一定の時間が来たら発射するようにするため、ここでは乱数を使い、1秒から5秒の間で発射するように変更します。
発射する位置
ネコのたまは、ネコから発射されましたね。ドラゴンのたまは、ドラゴンがいる場所から発射されるようにしたいです。そのため、ネコと同じように座標の情報を使い、たまの位置を変えます。ネコとたまの速度が同じだと少し難しいので、左端に到達する時間を1秒から5秒に変えます。
ネコが倒される条件
ネコがたまに当たったら、ドラゴンと同じように倒されるようにします。たまがあたった時点で、ゲームオーバーということになりますね。また一般的なシューティングゲームでは、敵本体に当たった時も同じように倒されることが多いので、敵のたまか敵本体のどちらかに当たった時とします。
では、1つずつ見ていきましょう。まず出現条件ですが、ドラゴンのプログラムを図の左側のように作ります。
図の右側は、敵のたまのプログラムとなります。ここでは、ドラゴン側のプログラムで「たま発射」というメッセージを送信して、それに合わせてたまが発射される仕組みにしました。位置はネコと同じような形で、ドラゴンの座標の数字を取得して移動しています。これで動かしてみると、どのようになるでしょうか。
一見、動いたように見えますね。ただ、たまが飛んでいる途中でドラゴンがもう1発たまを発射します。そして、この時に飛んでいたたまが消えて、ドラゴンのところに戻ってしまいます。これでは少々問題なので、たまが複数出るようにしたいです。どのようにしたら、良いでしょうか?
これは今まで解説していない要素なのですが、スクラッチの中には「クローン」という機能があります。これは、同じ処理をする別のものを作って使う機能です。まさに、今回のような場合に適しています。このクローンの機能を使って、プログラムを次のように変えてみましょう。
ここでは、メッセージを受けた時にクローンを作っています。そしてクローンができた時の動きとして、たまが右から左まで飛んで行くように動きを作ります。そして最後まで終わった時点で、このクローンを消します。これを忘れるとクローンが大量に発生してしまい、動きが遅くなるので、削除するのを忘れないように注意して下さいね。
以上の修正を入れると、どのようになったでしょうか。想定した通り、ドラゴンからたまが出てくるようになったと思います。
最後に、ネコが倒されてゲームオーバーになる部分を作ります。ここで重要なのは、ネコが倒される時の条件を、式で書くことです。ドラゴンの場合は「たまに触れたとき」としていたので、ネコの場合も、次の条件のどちらかが成り立つ時になります。
「敵のたまに触れたとき」
「ドラゴンに触れたとき」
前回の記事では「両方が同時に成り立つとき」を扱いましたね。今回のプログラムでは、どちらか片方が成り立てば良いですね。このような時に使うのが、「○ “または” ○」です。「または」は、「かつ」と違い、どちらか片方だけが成り立てば条件を満たすということを示します。これを使って、プログラムを書いてみましょう。
この図のように、倒される時の条件を「または」を使って書きます。このプログラムを動かすと、ネコがたまに当たった場合と、敵に当たった場合の両方で同じ動きをするはずです。以上で、ゲームのプログラムが一通り完成しました!
まとめ
3回に渡ってプログラムを作ることで、ようやくシューティングゲームが動くようになりました!条件文やクローンなど紹介していない内容も入っていたので、作れるプログラムの幅が広がったのではないでしょうか。
この内容をさらにグレードアップさせると、よりハイレベルなゲームになります。グレードアップさせるためのアイディアを、是非ご自身でも考えてみて下さいね!
次回は、違う題材でまた記事を書きたいと思います。何かご要望などがあれば、コメントやお問い合わせからご意見を頂けますと幸いです。それでは、次回の記事も楽しみにお待ち下さい!
東京都文京区小石川、東京都文京区本駒込、東京都新宿区下落合で、プログラミング&ロボット教室を運営しています!
小学生向けの内容としては、スクラッチやロボット(WeDoやマインドストームなど)の教材がございます。また中学生以上の受講生に向けた内容としては、Pythonという人工知能の開発などによく利用されるプログラミング言語を学習できる教材もご用意しています。子どもから大人までご受講頂けますので、プログラミングにご興味あれば、是非お気軽にお問い合わせ下さい!
プログラミング初心者の方も、大歓迎です!
お待ちしております!!