レッツ!スクラッチ (7) インベーダーゲームをつくろう ― たまを発射する
次は、いよいよ攻撃です。
スペースキーを押したら、ロケットから、たまが発射されるようにします。
たまを発射するには、たまの画像が必要になります。
スプライトペインの右下のアイコンにマウスカーソルを合わせると、「スプライトを選ぶ」という文字とともにメニューが4つ表示されます。
一番下の虫めがねアイコンをクリックすると、「スプライトを選ぶ」という画面になります。
「すべて」をクリックして、上から2番目の段のところにある「Ball」という丸いイラストをクリックします。
スプライトペインに、Ballが追加されました。
ステージペインに、たまが表示されているでしょうか?
ちょっと大きいですよね?
そういうときは…そう、初期設定で、たまのサイズを小さくしてあげるのでしたね。
「イベント」から「旗マークが押されたとき」ブロックをスクリプトエリアに置きます。
続いて「見た目」から「大きさを100%にする」ブロックを、「旗マークが押されたとき」ブロックに合体させ、100を50に変えます。
ここで右上の旗アイコンをクリックすると、たまが半分のサイズになっているのがわかると思います。
しかし、最初から、たまが見えているのはおかしいですよね?
たまはスペースキーを押したら発射されるようにするので、最初は見えていない状態にしないといけません。
「見た目」から「隠す」というブロックを、「大きさを50%にする」ブロックの下にくっつけます。
旗アイコンをクリックすると、たまが消えたでしょうか。
これで、たまの初期設定ができました。
スペースキーを押したらたまを表示する
スペースキーを押すと、たまを表示するようにします。
「イベント」から、「スペースキーが押されたとき」ブロックを選んでスクリプトエリアの空いている場所に置きます。
「制御」から、「自分自身のクローンを作る」ブロックを選び、「スペースキーが押されたとき」ブロックの下にくっつけます。
「クローン」とは、コピーのようなものです。
「自分自身のクローン」ということは、たまのコピーを作る、という意味です。
なぜコピーをつくるのでしょうか?
このあと、たまを発射できるようにしますが、もし、たまを連射できるようにしたい場合には、たまのスプライトを連射する数だけ作らなければなりません。でも、それだとスプライトペインに、たまがたくさんできてしまい、それらのたま一つずつに初期設定などをするのは、かなり面倒ですよね?
だから、たまのスプライトは1つだけにして、あとはクローンをつくる、というようにしておけば、いくらでもコピーをつくることができるのです。
さて、今、スペースキーが押されたら自分のクローンをつくるところまでやりました。
でも、これだけでは、たまは表示されません。
「制御」から「クローンされたとき」ブロックを、スクリプトエリアの空白の部分においてください。
「見た目」から「表示する」ブロックを「クローンされたとき」ブロックの下にくっつけます。
これで旗アイコンをクリックしてみてください。
たまは消えていますが、スペースキーを押すと、たまが表示されますね?
でも、たまが表示される場所が、ロケットがどこにあってもいつも同じ場所です。
たまはロケットから発射されるので、ロケットの場所に出てこないとおかしいですよね。
「動き」から「どこかの場所へ行く」ブロックを選んで、「表示する」ブロックの下にくっつけます。
「どこかの場所」をロケットのスプライト名である「スプライト1」に変えます。
これで、たまのクローンがつくられたときに、ロケットの位置で表示されるようになります。
たまを上に動かす
ここまでで、スペースキーを押すと、自分の位置にたまが表示されるようになりました。
でも、たまはその場に残ったままになっています。
うったたまは、上に自動的に動いていかないと敵を倒すことができません。
「制御」から「ずっと」ブロックを選んで、「スプライト1へ行く」ブロックの下につけます。
「動き」から「y座標を10ずつ変える」ブロックを選び、「ずっと」ブロックの中に入れます。
旗アイコンをクリックして、ロケットを動かしながらスペースキーを押してみてください。
きちんと、ロケットの位置から、たまが発射され、画面の上まで飛んで行ったでしょうか。
画面の上まで行ったたまを消す
今のままでは、うったたまは、画面の上にずっと残っています。
画面の上まで行ったら消えるようにしましょう。
「制御」から「もし なら」ブロックを選び、「y座標を10ずつ変える」ブロックの下にくっつけます。
「演算」から「 >50 」ブロックを選び、「もし なら」の穴に入れます。
「 >50 」ブロックの50を、170に変えます。
「 >170 」ブロックの左側の穴に、「y座標」ブロックを入れます。
「制御」から「このクローンを削除する」ブロックを選び、「もし なら」ブロックの間に入れます。
たまが画面の上ぴったりに表示されたときのy座標は170なので、170より大きい座標になったら画面の外に出た、ということにして、たまを消す、というプログラムにしました。
「クローンを削除する」ということは、クローンとして作った、たまを消す、ということなので、画面からたまが消えることになります。
たまを一度に一発しかうてないようにする
今回のルールでは、たまは一度に一発しかうてないようにする、ということにしていました。
連射できた方が楽しいと思うかもしれませんが、連射できてしまうと、かんたんに敵を倒すことができてしまいます。
ゲームを少し難しくするために、たまは一度に一発しかうてないようにします。
たまが画面にあるときは、次のたまは出てこない、というようにします。
そのためには、たまのクローンがあるときには、スペースキーを押してもクローンをつくらないようにすればよいのです。
でも、「クローンがあるとき」というブロックはありません。
そこで使うのが「変数」です。
変数とは、「中身を自由に変えることができる入れ物」のようなものです。
と言っても何のことだかわからないですよね?
実際にやってみましょう。変数はとても便利なもので、プログラミングでは必ずと言っていいほど使うものです。
このインベーダーゲームをつくるときも、このあとも何度か変数を使いますので、それで変数の使い方を何となく覚えてください。
「変数」から、「変数を作る」をクリックします。
まずは変数の名前を決めます。
「新しい変数名」という画面になりましたか?
ここで自分の好きな名前をつけます。
でも、覚えておいてください。
変数の名前は、「何に使う変数なのか」が読んでわかるようになっていた方が便利なのです。
ここでは、たまがあるかないかを判定するための変数なので、「たまの存在」という変数名にしました。
「すべてのスプライト用」「このスプライトのみ」という選択肢があります。
「すべてのスプライト用」とは、他のスプライトからもこの変数を使えるようにする、という意味です。
「このスプライトのみ」にした場合には、他のスプライトやクローンからはこの変数を使うことができなくなります。
わざわざ他のクローンからは使えないようにして不便にすることはないんじゃないか、と思うかもしれません。
でも、それぞれに意味があるのです。
「すべてのスプライト用」にした場合には、すべてのスプライトやクローンから同じ変数を使うことができるので、あるクローンで設定した変数を、別のクローンで使いたい、というときに役立ちます。
「このスプライトのみ」にした場合には、他のスプライトやクローンでは使えなくなる一方で、他のスプライトやクローンでも、同じ名前の変数を別につくることができます。
同じ名前だけど、変数の中身はそれぞれのスプライトやクローンで別々にしたいとき、などに使うことができます。
この変数の意味も、今は何となく理解しておいてください。
さて、ここでは先ほど設定した「たまの存在」変数は、他のクローンでも使うので、「すべてのスプライト用」にしておきます。
さて、「スペースキーが押されたとき」ブロックの下にくっついていた「自分自身のクローンを作る」ブロックを外して、代わりに、「もし なら」ブロックを追加しましょう。
そして、「演算」から「 =50 」ブロックを選び、「もし なら」ブロックの穴に入れます。
「 =50 」の左側の穴には、「変数」から「たまの存在」ブロックを入れます。
右側の数字は、「0」にします。
「変数ブロック」から、「たまの存在を0にする」ブロックを選び、「もしたまの存在=0なら」ブロックの中に入れます。
「たまの存在を0にする」の数字を1にします。
外しておいた「自分自身のクローンを作る」ブロックを、「たまの存在を1にする」ブロックの下にくっつけます。
これで、スペースキーを押したときに、「たまの存在」変数が0のときは、たまのクローンをつくります。
それと同時に、「たまの存在」変数を1にすることで、もう一度スペースキーを押してもクローンがつくられなくなります。
「たまの存在」変数が0ではないときには、クローンをつくらないからです。
でも、このままだと、一度たまを発射したら、次のたまをうつことができません。
たまが画面から消えたタイミングで、「たまの存在」変数を0に戻してあげる必要があります。
そのためには、「クローンされたとき」ブロックの、「もしy座標>170なら」ブロックの中にある、「このクローンを削除する」ブロックの上に、「たまの存在を0にする」ブロックを入れます。
これで、たまが画面の上に行って消えたら、もう一度たまをうつことができるようになります。
ところで、ゲームスタート時は、たまをうてるようにするので、初期設定のときは、「たまの存在」変数は0にしておかなければなりません。
「旗マークが押されたとき」ブロックの「隠す」ブロックの下に「たまの存在を0にする」ブロックをくっつけます。
これで、一発うったら、たまが消えるまでは次のたまをうつことができなくなりました。
次回は敵を表示させましょう!
→「レッツ!スクラッチ」コンテンツリスト
関連記事