こんにちは、プログラミング教室Willowの柳です!
シューティングゲームを作っていきます。上の解説動画で基本的なことはすべて解説しています。(よければご試聴ください!)
今回作るシューティングゲームはScratchに元から入っている素材だけを使います。
できるだけ簡単に、でもできるだけ面白く作っていきますので是非参考にしてください。
今回作るプログラム完成版:https://scratch.mit.edu/projects/320430236/
この記事は動画の内容とほとんど同じですので、お好きな方をご覧ください。
では作っていきます!
操作キャラ【自機】を作ろう
まずは、シューティングゲームにとって最も重要な”操作キャラ”を追加しましょう。
Scratchで用意されているスプライトを使います。
(もともと、ネコがいると思いますがそれは今回つかわないので削除します。スプライト右上の×ボタンをクリックすると削除できます。)
今回は、この飛んでるネコのスプライトを操作きゃらにするよ!
クリックして追加しましょう。今回はこのネコを操作して、画面を飛び回り、タマを発射して敵を倒したりします。
まだ何も動かないね
プログラムしていないので動きません。
左右上下の矢印キーで動かせるようにしましょう。下の図を真似てプログラムしてみてください。
これで動くようになります。
~プログラムの説明~
「もし~なら」と「~キーが押されたとき」を組み合わせることで、
「もし~向き矢印キーが押されたなら」というブロックが作れます、
この時、右向きキーなら右へ、左向きキーなら左へ動いてほしいので座標を変化させます。
左右方向の座標はx座標、上下方向の座標はy座標で制御します。
なので、図のプログラムのようにプログラムすることで、各矢印キーに対応してキャラクターが動くようになります。
操作できるようになってシューティングゲームに一歩近づいたね!
でも、背景が真っ白で寂しいね。
それでは背景を追加しましょう。画面右下の背景を選ぶから好きな背景を選びましょう。
こんな背景を選びました。
一気にシューティングゲームっぽい雰囲気が増したね!
画面に対して少しネコがおおきいので大きさを70に変更します。
ここまでで、自キャラの操作とフィールドの準備ができました!
次は、弾(攻撃)を発射できるようにしていきましょう。
弾(攻撃)を発射できるようにしよう
弾となるスプライトを追加しましょう。
今回は、Ballを使います。
大きさを30にして、まずは下のプログラムを真似てみましょう。
これで、ネコからタマが発射され右へ飛んでくようになります。
~プログラムの説明~
初期の状態では弾は見えないようにするため、
旗が押されたら「隠す」ブロックで非表示にしましょう。
弾はスペースキーが押されたら発射されてほしいので、
スペースキーが押されたら、弾を表示します。
弾はネコから飛んでいってほしいので、「Catflying(ネコ)へ行く」を実行し、
「端に触れるまでx座標を10ずつ変える」ことで弾が右に飛んでいきます。
弾が発射できるようになりました!
しかし、スペースキーを連打しても1個の弾しか発射できません。
弾を連射できるようにするために、「クローン」ブロックを使って下のようにプログラムを変更してください。
これで、弾が連射できるようになります。
クローンは、この弾の分身を作るブロックです。分身が作られたら、先ほど作った弾が右に飛んでいく処理が実行されます。
弾は追加されたけど、倒す敵がまだいないね。
それでは、敵を追加していきましょう。
敵を追加しよう
敵キャラとなるスプライトを追加しましょう。
コウモリとユウレイの2体を追加します。大きいので、大きさを50にします。
では、それぞれプログラムしていきます。
まずは、コウモリからです。下のようにプログラムしてみましょう。
これで、1秒ごとにコウモリが右から左へ飛んでくるようになります。
このプログラムでもクローンを使います。弾のプログラムと少し似ていますね。
~プログラムの説明~
初期の状態ではコウモリを見えなくするため、
「旗が押されたら隠す」ブロックで非表示にしましょう。
今回、1秒ごとにコウモリを出現させるので
「1秒まつ」「自分自身のクローンを作る」をずっと繰り返します。
クローンがつくられたら、出現場所のx座標、y座標を決めてあげます。
画面右側に出現してほしいので、x座標は240、y座標に関してはどこでもいいので
乱数で-180~180とします。
出現したら、左へ飛んでいってほしいのでx座標を-10ずつ変えるを画面右端に到達するまで(x座標が-240より小さくなるまで)繰り返します。
最後にクローンを削除しましょう。
では、ユウレイの方もプログラムしていきましょう。
まったく同じものをコピーしてもいいのですが、せっかくなので動きをトリッキーにしてみましょう。下のプログラムを真似てみましょう。(コウモリのプログラムとほとんど同じなので、コピーすると楽です。)
これで、ユウレイも動きます。ゆらゆらと揺れながら移動するようになりました。
~プログラムの説明~
動きの部分以外は、コウモリとほとんど一緒です。
ただし、コウモリと出現タイミングをズラすために、
「2.8秒待つ」に変更してあります。
動きのプログラムでは、ゆらゆらと動くように
x座標を-10ずつ変えるに加えて
「y座標を-10 * x座標のsin ずつ変える」
を追加しました。
sinについては少し難しいので、ここではこのようにすると
「波を描くように動く」
とだけ理解しておきましょう。
これで、敵を動かすプログラムの完成です。
敵に弾を当てても倒せないよ!
では次は、弾を当てたら敵を倒せるようにしましょう!
コウモリ、ユウレイのプログラムに↓のプログラムを追加しましょう。(画像はユウレイのプログラムですが、コウモリも同様の場所にプログラムを付け加えましょう。)
これで、ネコの発射した弾に当たると敵が消えるようになります。
「もしネコの攻撃に触れたなら」クローンが削除されるためです。
敵が倒せるようになったので、次は自分のライフも設定しましょう!
体力(ライフ)を設定しよう
ネコの体力を設定しましょう。
「ネコの体力」という名前で変数を追加します。
この変数の値が残り体力を表します。では、ネコ(CatFlying)を選択して次のようにプログラムしましょう。
これで、コウモリやユウレイに当たってしまうとダメージを食らうようになりました。
~プログラムの説明~
まず、「旗が押されたら体力を3にする」
で初期体力を設定しましょう。(必ずしも3である必要はありません)
そしたら、ゲーム中”ずっと”敵に触れたら体力が減るようにします。
「もしコウモリに触れたなら」「もしユウレイに触れたなら」体力を-1してあげましょう。
「体力を-1ずつ変える」のしたに1秒待つがついていますが、これはダメージを食らった後の無敵時間です。この無敵時間がないと、敵に触れている間体力が減り続けるので、一気にダメージを食らってしまいます。(ブロックを取り外して試してみるとよくわかります。)
体力もできて、敵も倒せるようになって、だいぶシューティングゲームの形になってきたね!!
次は、ボスが登場するようにします!
ボスを登場させよう!
ボスキャラを追加しましょう。
スプライトから恐竜を選びます。向きを左向きに変更し、大きさを200にしましょう。
では、ゲームが開始したら10秒後にこのボスが登場して攻撃してくるようにプログラムしていきましょう。
これで、ボスが登場するようになります!
~プログラムの説明~
ボスの体力という変数をあたしく作って、初期値を10としましょう。
ゲームスタート時は非表示になるように「隠すブロック」を実行します。
10秒待つブロックのあとはボスがゆっくり登場します。
x座標を500にしてから、x座標を-1するを200回繰り返すことで
画面外からゆっくり登場するように演出できます。
その下の、「ずっとブロック」の中では
ボスのコスチュームを0.5秒ごとに切り替え
「もしネコの攻撃に触れたなら」ボスの体力が減るというプログラムになっています。
大きい敵が登場すると迫力がありますね!でもまだ何もしてこないですね。
それでは、ボスが攻撃するようにプログラムを改良しましょう。
ボスからの攻撃をプログラムしよう!
ボスから攻撃が発射されるようにしましょう。考え方はネコの攻撃と同じです。
“ネコの攻撃”スプライトを複製して、ひとつを”ボスの攻撃”という名前に変更しましょう。
ネコの攻撃と見分けがつくように、コスチュームを変更しピンク色の弾にします。
さらに、下のようにプログラムします。
これで、「ボスの攻撃開始を受け取ったら」1秒ごとに弾がランダムな方向に2発発射されるようになります。
「ボスの攻撃開始を送る」ブロックがまだないので、恐竜のスプライトのプログラムの下の位置に追加します。
これで、ボスがとうじょうしたら攻撃が始まります。
1秒ごとに作成するクローンを増やすと、同時にたくさんの弾を発射するようになるので好きなように調節してみてください。
あとちょっとで完成です!もう少し頑張りましょう。
あとは、ゲームクリアとかゲームオーバー画面が欲しいですね!
ゲームクリアー、ゲームオーバーを追加しよう!
まずは、ゲームクリアとゲームオーバー画面のスプライトを追加します。
「スプライトを描く」から自作してみましょう。
あとは、これらの画面を適切なタイミングで表示するだけですね!
ゲームクリアーを表示するタイミング
・ボスの体力を0にしたとき
ゲームオーバーを表示するタイミング
・ネコの体力が0になったとき
ですので、
ボス(Dinosaur4)のスプライトに以下のプログラムを
ネコ(CatFlying)のスプライトに以下のプログラムを
あとは、ゲームクリアー・ゲームオーバーのスプライトにメッセージを受け取った時のに表示する処理を追加するだけですね。
ゲームクリアを受け取ったとき↓
ゲームオーバーを受け取ったとき
はい!これで自分の体力が0になったらゲームオーバー、ボスの体力が0になればゲームクリアーとなります!!
完成です!!!
できました!!おつかれさまです!!
あとは、プログラムが理解できて来たら
好きなところを改造したり、追加したりして、自分のオリジナルゲームにしてみてください!
おわりに
ここまで、頑張ってくれてありがとうございました!
このシューティングゲームプログラムができたらScratchの基本的なプログラミングはほぼマスターできていると思います。この調子で、プログラミングを楽しんでください。
下の記事もおすすめですので、やることに困ったら挑戦してみてください!
以上、最後までお読みいただきありがとうございました!