レッツ!スクラッチ (14) インベーダーゲームをつくろう ― インベーダーに攻撃させよう!
これまでインベーダーは移動してくるだけでした。
今回はインベーダーも移動しながらたまをうってくるようにしてみましょう。
これでぐっと難易度が上がりますね。
いつものとおり、まずは敵がうってくるたまのスクリプトを選びましょう。
今回は「Lightning」(ライトニング)を選んでみました。
ライトニングとは、いなずまのことです。
これもそのままでは大きすぎるので、初期設定で大きさを変更します。
「旗マークがおされたとき」ブロックをおき、その下に「大きさを20%にする」ブロックをくっつけました。
「旗マーク」をクリックしたら、「Lightning」スプライトが小さくなりましたね。
最初は敵のたまは見えていては困るので、その下に「隠す」をくっつけておきます。
敵の攻撃タイミング
次に、敵の攻撃タイミングを考えます。
どういうときに敵が攻撃してくるのか、ということですが、今回は一定時間が経ったら攻撃してくるようにします。
こういうときも変数を使います。
「敵の攻撃間隔」という変数を「すべてのスプライト用」でつくりましょう。
この変数を1ずつ増やしていって、ある数になったら攻撃をする、という風にします。
「Ghost」スプライトを開きましょう。
「クローンされたとき」ブロックの一番下、「敵のY座標をy座標にする」ブロックの下に、「もし なら でなければ」ブロックを入れます。
「もし なら」の穴には、「 =50 」ブロックを入れて、左側は「敵の攻撃間隔」にします。
右側は100にします。
「もし敵の攻撃間隔=100なら」ブロックの中に、「敵の攻撃間隔を0にする」ブロックを入れます。
その下に「(メッセージ)を送る」ブロックを入れて、メッセージは新しく「敵の攻撃」をつくりました。
「でなければ」の中には、「敵の攻撃間隔を1ずつ変える」ブロックを入れます。
これで、「敵の攻撃間隔」変数が1ずつ増えていき、100になったら「敵の攻撃」メッセージを送る、というプログラムになりました。
敵のたまを表示する
敵の攻撃メッセージを受け取るのは、敵の攻撃のスプライトになるので、「Lightning」スプライトを開きます。
「敵の攻撃を受け取ったとき」ブロックを置きましょう。
敵の攻撃メッセージを受け取ったら、敵のたまのクローンを作るので、「自分自身のクローンを作る」ブロックをくっつけます。
さらに、「クローンされたとき」ブロックを置きます。
クローンされたら、まずはたまを表示するので、「表示する」ブロックをくっつけます。
そして、敵のたまの発射位置を、敵のいたところにするため、「x座標を敵のX座標、y座標を敵のY座標にする」ブロックをくっつけます。
これで、「敵の攻撃間隔」変数が100になるたびに、敵のたまが発射されます。
でも、まだ敵のたまが表示されるだけで、下に向かって落ちていかないので、今度は、その下に「ずっと」ブロックを置きます。
「Ball」スプライトでやったことと似ていますが、今度は下に向かって落とすので、「y座標を-5ずつ変える」ブロックを入れます。
「Lightning」クローンが一番下まで来たら消したいので、「もし なら」ブロックを置きます。
「もし なら」の穴に「 <50 」ブロックを入れます。
「 <50 」の左側は「y座標」ブロックにして、右側は「-190」にします。
「もしy座標<-190なら」ブロックの中に「このクローンを削除する」ブロックを入れます。
これで、敵のたま(Lightningクローン)が画面の一番下まで行ったら消えるようになります。
敵のたまがロケットに当たったときの判定
次は、敵のたまが、ロケットに当たったら、ゲームオーバーにする処理を作ります。
「もしy座標<-190なら」ブロックの下に「もし なら」ブロックをくっつけます。
「もし なら」の穴に「スプライト1に触れた」ブロックを入れます。
「もしスプライト1に触れたなら」ブロックの中に、「ゲームオーバーを送る」ブロックを入れます。
「ゲームオーバーを送る」ブロックはメッセージを送るブロックですね。
これで、インベーダーが攻撃してくるようになりました。
次はさらにゲームらしくするため、アイテムをとったらロケットがパワーアップするようにしてみましょう!
→「レッツ!スクラッチ」コンテンツリスト
関連記事