スポンサーリンク
Scratch

Scratchでシューティングゲームを作ろう

Scratch

Scratchでシューティングゲームを作ってみます。
今回のシューティングゲームはとても簡単に作ることができます。
基本的なシューティングゲームの動きは入っているので、応用してもっとすごいゲーム作成にもチャレンジしてください。

スポンサーリンク

シューティンゲームの概要

今回作るシューティングゲームの仕様を説明します。

自機は画面下を←キー、→キーで左右に移動できます。
スペースキーでミサイルを発射します。
敵は画面上部を左右に移動しています。
ミサイルが当たると敵が消えます。
しばらくすると、また敵が出てきます。

材料

今回は、Scratchに標準で用意されているストライプだけで作っていきます。
自機はトンボのストライプ、敵はコウモリのストライプ、ミサイルは魔法の杖を使う事にします。
ちょっと格好悪いですが、手軽に作って行こうと思います。


プログラム

各スプライトに作るプログラムを説明していきます。

自機(トンボ)スプライト

スプライトの設定は次の様に設定します。


大きさは40にします。
向きは90にします。(初めから90だと思いますが)
x,yはプログラムの中で設定するので、なんでも構いません。

自機(トンボ)のプログラム全体はこれだけです。

自機(トンボ)の位置を設定する

プログラムが開始されたら、自機の位置を画面下に移動させます。
x座標は0なので左右の中心に移動することになります。
y座標は-138にします。
大きさが40のトンボスプライトの場合、このあたりがちょうど良いです。
(他のスプライトや大きさを変える場合は調整してください)

左右に移動する

左右に移動するプログラムをまとめて説明します。

イベントブロックを使って、左矢印が押された場合と右矢印が押された場合のプログラムを作ります。

左矢印が押された場合はx座標を-5ずつ変えることで左移動をします。
ただし、x座標が-190より大きいときという条件を付けます。
この条件と付けることで、画面からはみ出しそうになった時は移動を止めることができます。

同じように右矢印が居された場合のプログラムも作ります。
右に移動する場合は5ずつ増やします。
右にはみ出さないようにするにはx座標が190より小さいときという条件を付けます。

このプログラムには欠点があります。
イベントのブロックを使うと処理が遅くなり、自機の移動がカクカクした動きになってしまいます。
最後にこの問題を解決します。
イベントブロックを使ったほうがわかりやすいプログラムになるので、まずはイベントブロックを使ってみましょう。

ミサイルを発射する

スペースが押されたらミサイルを発射します。
イベントブロックを使ってスペースキーが押されたときのプログラムを作ります。
ミサイルを登場させて飛ばすプログラムはミサイル(魔法の杖)スプライトに作成ます。
ただ、自機の目の前にミサイルを登場させたいので、スペースキーが押されたら自機の位置(x座標)を変数に入れておきます。
そのあと、ミサイルに「発射しろ」と命令を出したいので「発射」のメッセージを送ります。

この後出てきますが、ミサイルのスプライトには「発射」のメッセージを受け取って動くプログラムを作ります。

ミサイル(魔法の杖)スプライト

魔法の杖のスプライトをミサイルの代わりに使って作っていきます。

大きさは50にします。
向きは180にして縦向きにしておきます。
表示するは非表示にしておきます。
x座標y座標は適当でいいです。プログラムの中で位置を決めます。


プログラムはこんな感じです。

プログラムは3つ塊です。
プログラムが開始したとき。
「発射」のメッセージを受け取ったとき。
「爆発」のメッセージを受け取ったとき。

プログラムの開始

プログラムが開始したら、非表示にしておきましょう。
スペースキーが押されてミサイル発射するまで表示しない方が格好いいですから。

「発射」のメッセージを受け取ったとき

「発射」のメッセージはスペースボタンを押したときに「自機」のスプライトから発信されてます。

ミサイルを発射する合図です。
このメッセージを受け取ったら、
このスプライトは自分の位置を「自機」の目の前に移動させます。
x座標は「自機」のスプライトが変数に入れてくれているので、それを使います。
y座標は適当に「自機」前ぐらいの場所で調整してください。
95ぐらいがちょうどよさそうです。

発射位置が決まったら「表示する」にします。

後は画面上に向かってy座標を変えていきます。
画面の上まで行ったら移動する必要ないので、y座標が180より大きなったら移動はやめます。

画面の端まで行ったらミサイルは消したいので、移動を止めたら非表示にします。

「爆発」メッセージを受け取ったとき

ミサイルが敵とぶつかったときのプログラムです。
ミサイルが敵とぶつかった判定は敵(コウモリ)のスプライトで行っています。
敵側から「爆発」のメッセージが送られてくるので、それを受け取ったらミサイルを消滅させます。

敵(コウモリ)スプライト

コウモリのスプライトを敵に見立てて作っていきます。

大きさは50にします。
向きは90で初期のままです。
y座標は148ぐらいにしておきます。
(あまり上に置きすぎると、画面上に当たって跳ね返ってしまいます。)
x座標は適当でいいです。

敵を動かす

敵(コウモリ)のスプライトはこれだけです。

プログラムが開始されたら、ひたすら左右に動き続けます。
「ずっと」を使ってプログラムを永遠に繰り返します。

座標は指定せずに「〇歩動かす」ブロックを使います。
この例では、5歩に設定しています。
この数字を変えると敵の動くスピードが変わります。

「もし端に付いたら、跳ね返る」ブロックを使う事で、画面を左右に移動し続けるプログラムを作ることができます。

「もし、水色に触れたなら」というブロックでミサイルに当たった判定をしています。
水色はミサイルの色です。
ミサイルに他のスプライトを使う場合は、ミサイルスプライトの色に合わせて変更してください。

ミサイルに触れたら、
メッセージ「爆発」を送ります。
メッセージ「爆発」を受け取る処理はミサイルのスプライトにあったことを思い出してください。

そのあと、敵(自分自身)のスプライト隠します。
隠すことでミサイルが当たって消滅したことにします。

そのあと、2秒待って表示しています。
これは、次の手敵が出てきたという事にしています。

改善版プログラム

自機(トンボ)スプライトの左右移動に、イベントのブロックを使っていました。

このプログラム欠点としては処理が遅いことです。
自機を動かすときに、カクカクした動きになってしまいます。

この2個のプログラム消して、次のようなプログラムを作ります。
下の様にすると動きが滑らかになります。

イベントブロックを使わずに、
「ずっと」ブロックで「右が押されたとき」と「左が押されたとき」の条件を繰り返し判定して左右移動をします。

コメント

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