Scratchでゲーム制作入門 – 見下ろし型シューティングゲーム(3)

こんにちは、まなゲー池田です。
見下ろし型シューティングゲーム」の3回目をやっていきます。
2回目はこちら)

今回は、「プレイヤー機からビームを発射」できるようにします。
やっと少しシューティングゲームっぽくなりますので、楽しんでくださいね。

「ビーム」スプライトを作る

「新しいスプライトを描く」を選択し、ベクターモードにします。

「直線」ツールを選択。太さや色も選びます。

ビームのような小さいものを描くときは、拡大して描くことをお勧めします。

拡大してみると、「中心」を表す+印があることがわかります。ぴったりその上を通るように縦に線を引いてやりましょう。ここを適当にやってしまうと、あとで思っているのと違う場所からビームが発射されてしまいます。気をつけてください。

プレイヤー機に対してこのくらいのサイズ感で良いかと思います。もちろんお好みで。

作ったスプライトに名前をつけます。「ビーム」っと。

ついでにプレイヤー機にも「プレイヤー」とつけておきましょう。

ひとつのスプライトをもとに、たくさんのものを作る「クローン」

準備ができたので、ここから中身を書いていきますが、これまで作ってきたものと違って、「ビーム」は、プレイヤー機から次々と発射されるオブジェクト(もの)です。

このように「ひとつの型からたくさんのものを作って使いたい」場面では「クローン」を使います。
「スプライト」から「クローン」を作ると、たこ焼き器で、たこ焼きをつくるように、「同じもの」だけど「それぞれ別々のモノ」を作って、それぞれに動かすことができるようになります。

言葉で説明すると、ちょっと難しいですね。やってみたほうが早いかな。やってみましょう。

「プレイヤー」スプライト側のスクリプトを書く

まず、プレイヤー機に「ビームを発射する」ためのプログラムを書いていきます。

新しく「旗がクリックされたとき」ブロックを出してきて、これまで書いてきたものとは別の新しいスクリプトを書きます。

下図のようにスクリプトを組んでみましょう。

これを実行すると。最初にスペースキーを押して、ゲームスタートした後、「スペースキーが押されたかどうか」を、コンピュータがずっと監視している状態になります。

そして、スペースキーが押されていたら、「ビーム」のクローンを1つ作って、1秒待ち、そしてまた「スペースキーが押されたかどうか」をずっと見ている状態に戻る、というのを繰り返してくれます。

なので、スペースキーを押しっぱなしにした場合、1秒おきに新しいビーム(クローン)を作り続けてくれることになります。

ただし、この状態でプログラムを動かし、スペースキーを押しっぱなしにしてみても、パッと見何の変化も起こりません。なぜなら、最初から表示されているビーム(型となるスプライト)と同じ場所に同じ大きさで、作られたクローンが重ねおきされていっているからです。

これを確認するには、プログラム起動後、しばらく(5秒ほど)スペースキーを押しっぱなしにしてから、マウスを使って、ビームをドラッグ&ドロップしてみると良いです。ひとずつ動かしてみると、その下に別のクローンがちゃんとあるのがわかります。

「ビーム」スプライトのスクリプトを書く

スペースキーで、ビームスプライトのクローンを作ることができるようになりましたが、これでは「発射」したとは言えません。

(1)プレイヤー機の場所にクローンが出現して
(2)その場所から、画面上に向かって飛んで行く

ように、「ビーム」側にも「クローンされた後どうするか」を書いてあげなければいけないのです。
あとで、もう少し書き加えますが、ひとまずこんな感じのプログラムで動きます。

「型になるスプライト」がずっと見えていては具合が悪いので、旗がクリックされたら隠すようにします。

そうしておいて、クローンされたら、

座標をプレイヤー機の座標と同じにする(この時点ではまだ隠れてるので見えません)
表示する(プレイヤー機の場所に「出現」したように見えます)
Y座標を10ずつ増やすのを繰り返します。(ステージ上に向かって移動していきます)

という命令が(クローンごとに、つまり一発一発のビームごとに)実行されるようにしてやります。

これで、「スペースキーでビーム発射」ができるようになりました!

ビームが画面端にたまってしまうのをなんとかする

さて、何発かビームを撃ってみると、困ったことが起こっていることに気がつくかと思います。
なんと、発射したビームが画面上端にどんどん溜まってしまっているじゃないですか。

ビームをかなり小さく描いた場合、もしかすると溜まっているのが見えないかもしれません。そうだったとしても、これは大問題です。

というのも、Scratchにはオブジェクトの同時配置数に制限があるので、このままでは一定数ビームを発射すると、それ以上ビームが撃てなくなるのはもちろん、ビーム以外の、例えば敵キャラなどのオブジェクトも、出てこなくなってしまうのです。

これをなんとかするために、クローンされたビームたちには、画面の端まで行ったら消えてもらわなければなりません。下図のようにプログラムを書き加えてやりましょう。

これで、ビーム周りは完成です。
あ、もしかすると、上のプログラム追加で「ビームが発射されなくなった!?」となった人があるかもしれません。その原因はおそらくこうです。

追加したプログラムは、「ビームが画面の「はしっこ」に触れたら削除する」というもので、ここでいう「はしっこ」は画面上だけではなく、下でも、左右でも同じです。

なので、例えばビームスプライトが大きすぎたり、出現場所がプレイヤー機から下や左右にずれていたりした場合、「発射直後に、どれかの「はしっこ」に触れているので、速攻で削除されてしまった」ということが起こる場合があります。

小さめのビームスプライトになるように書き直して、きちんと「中心」を決めてやれば解決するはずなので、色々試してみてください。

さて、今回はここまで!次はいよいよ敵キャラの出現です!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です