スクラッチでシューティングゲームの作り方(その2)

ゲーム作り

今回つくるゲーム

難易度3 out of 5 stars

前回はシューティングゲームの背景と自機の動きをつくりました。今回は敵を作ってゲームを完成させていきます。

まずは、
シューティングゲームの作り方(その1)
で最初からつくっていただくか
こちらをリミックスして開始してください。

※スクラッチ初心者の方は、まずこちらの、
もぐらたたきゲームの作り方(初級)
からチャレンジしてみてください。

敵を動かす

まずは敵を表示していきます。単純に下に向かってくるだけだとゲームにならないので、下図のように、画面上部に出現させてそこからジグザグに降りてくるようにプログラミングします。

まず、下図のように”おばさん”のスプライトにプログラムを組みます。

上部のどこか(−200<X<200)におばさんが現れて、スクロール速度の半分(0.5)のスピードで左下に移動します。この0.5の部分は好きな速度にしてください。早い方がゲームの難易度は高くなります。
そして一番下(Y<-180)にきたら隠します。

上の動画のようになったと思います。このままだと、端になったら消えていってしまうので、端に到達したら反対側に移動するようにプログラムを組み直します。
おばさんの向きをコントロールするために”おばさんの向き”という変数を追加します。
初期値を1にして、左端にきたら(つまりX<-220)おばさんの向きを−1に変えて動きを反転させます。

下の動画のようになれば成功です。

敵をやっつける

次に敵をやっつけるプログラムを追加していきます。おじさんの玉はどんどん出てくるので、1発当たっただけで敵がやられてしまうと、簡単すぎます。今回は50発当たったら倒せるという設定にします。
下の図のように、おばさんのスプライトの中で、”おばさんのカウント”という変数を作り、初期値を0にしておじさんの玉に触れる度に1ずつ増やしていきます。そして50よりおおきくなる(つまり50発当たる)と倒す(つまり隠す)という指示を書いていきます。

次に敵を倒した時に、敵が爆発するようにします。
先ほどのコードでおばさんのカウントが50を越えた時に”おばさん撃破を送る”という指示を加えます。

次に、爆発のスプライトに移動します。
下図のように緑の旗が押されたときには隠しておいて、
おばさん撃破を受け取った時に、おばさんの場所に行って表示させます。
そして、コスチュームを2→4→6と変化させて隠します。

これでおばさんに玉が当たった時に爆発したように見えます。
下の動画のようになれば成功です。

次に、敵を1体やっつけたら、次の敵が出てくるように設定します。
先ほど作った爆発スプライトのコードに最後に”次のおばさん出現を送る”を追加します

次のおばさん出現という指示を受け取って、再びおばさんを画面上から出現させるのですが、ここで活躍するのがブロック定義になります。同じ指示を繰り返し使う時にこのブロック定義を使います。

おばさんのスプライトに移って、下図のように”ブロックを作る”を選択し、”おばさんの動き”というブロックを作ります。

そして、おばさんのスプライトのコードを下図のように組み替えます。
一連のおばさんの動きを”定義:おばさんの動き”にくっつけて、これを一つの指示のかたまりにします。そして緑の旗が押された時、”次のおばさん出現を受け取った時”にそれぞれ”おばさんの動き”をくっつけます。
ちなみに”おばさんの向きを1にする”という指示を緑の旗が押されたときにつけているのは、やつけられたおばさんの向きが次のおばさんに引き継がれるようにしただけです。定義に入れてしまっても問題ありません。

下の動画のようになれば成功です。

敵の攻撃を作る

敵からは玉を3方向に打つようにします。
下図のように玉の向きを1〜3まで用意してそれがランダムに発射されるようにします。

おばさんの玉のスプライトに移動してコードを書いていきます。
コードは下図のようになります。
非常に長いコードですが、解説していきます。
まず旗が押された時にX:-250,Y:190にしているのは、オリジナルの玉はどこかしらに配置しておかないと、間違っておじさんに当たってしまう可能性があるので左上の隅においやっているということです。そして、0.3秒ごとに自分自身のクローンを作り、その都度おばさんの玉の向きをランダムに1〜3まで設定します。
次に、クローンされたときに、まずおばさんへ行きます。玉はおばさんのいる位置から発射されるためです。そして玉の向きが1・2・3それぞれで発射される向きを設定していきます。
端に触れた時には隠してクローンを削除するようにしましょう。

そうすると、下の動画のように3方向に玉が発射されるようになったと思います。

敵の攻撃のコードはこれでも大丈夫ですが、ものすごく長いコードになっていて、きれいなコードとは呼べません。おばさんのスプライトでも使ったブロックを使って、コードをきれいにしてみます。

おばさんの玉のスプライトで、ブロックを選びます。ブロックの名前は”おばさんの玉の動き”として、さらに”引数を追加”を選択しそこに”玉の向き”と書き込みましょう

プログラミングではこの”引数”というのをよく使います。このブロックを使っておばさんの玉のスプライトを以下のコードに書き換えます。ずいぶんすっきりしましたね。(おばさんの玉の向きを−1〜1の乱数に変更しています。)

クローンされたときに”おばさんの玉の向き”を引数に持って、ブロックを実行するというプログラムになっています。

例えばクローンされたときにおばさんの玉の向き−1だとすると、
クローンされた時に”おばさんの玉の動き(−1)”というブロックの指示になります。
そして”定義:おばさんの動き(玉の向き)”で、玉の向きのところに−1が入るので、
X座標を(−3×−1)ずつ変えるという指示になります。

敵の玉に当たったときの動き

さいごに、敵の玉にあたったときにやられる動きを作っていきます。
おじさんのスプライトにもどって、おばさんの玉に触れたときに、”玉があたった”という伝令を送って、スクリプトを止めます。

そして、”玉があたった”という伝令を伝令をうけて”やられた”のスプライトが表示されます
やられたのスプライトに移動して、下のコードを書きます。

おじさんの玉のスプライトでは、”玉にあたった”という伝令を受け取ったときに、玉を打つのをやめて、クローンを削除しましょう。また細かいですが、見やすいように玉の色は白に変更しときましょう。

下の動画のようになれば完成です。

あとは、音を設定したり、点数をつけたり、別の敵を表示させたり、パワーアップアイテムをゲットしたり、いろいろなカスタマイズをしてみてください。完成したコードはこちらからも確認できます。
シューティングゲームの作り方_完成コード

コメント

  1. さくべーさん より:

    おばあんになってますよ

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