21 8月

ゲームを作ろう ~ 2. 地球防衛ゲーム(難易度★★☆)

こんにちは。
こちらの記事では少し応用のあるゲームを紹介します。

今回は地球防衛ゲームを作成していきましょう。降ってくる玉から地球を守るゲームになります。

作るものを確認

まずは完成品を見てみましょう。緑の旗を押すと地球とスコープが表示され、Sキーがゲームスタートで玉が降ってきます。スコープがマウスについてくるので、玉に合わせて消していきます。地球に玉が当たってしまったらアウトです。

https://scratch.mit.edu/projects/686907823/fullscreen/

それでは、スクラッチの開発画面を開きましょう。
https://scratch.mit.edu/projects/editor/

スプライトと背景

スプライトは地球(Earth)、玉(Ball)、スコープを用意しましょう。ねこはいらないので削除しましょう。

スコープはえがくツールから、直線と円を組み合わせて作ってみましょう。

背景はNebulaを追加しましょう。もとの背景は削除しましょう。

それではプログラムを作っていきましょう

地球(Earth)の設定

スタート時の位置、大きさ、コスチュームを設定します。

次は玉に当たった後の設定をします。もし玉(Ball)に当たったらという条件を作ります。「もし~なら」ブロック、「Ballに触れた」ブロックを組み合わせます。

見た目に関する設定をします。コスチュームにもうひとつEarthを追加して、青色を赤色に塗りつぶしましょう。コスチューム名は「赤」にしましょう。

その後「コスチュームを赤にする」ブロックを用意します。

音に関する設定をします。Loseの音を追加して、「終わるまでLoseの音を鳴らす」を用意しましょう。

すべてをとめるブロックを用意して、コスチューム・音ブロックと一緒にもし~ならブロックの中に入れます。玉(Ball)にあたると、地球が赤色になりアウト音がなって停止します。

この判定をずっとさせたいので、ずっとブロックの中に入れます。全体として以下のようになれば、地球のプログラムは完成です。

スコープの設定

スタート前のスタンバイ状態を作ります。スコープの位置と説明を設定します。この時点ではマウスにスコープは追従しません。

次はスタート後の設定です。
スコープがマウスポインターを追うようにします。

マウスに追い付いた後にガクガクするのを防ぐために以下のようにします。

全体として以下のようになればスコープの設定は終わりです。

玉(Ball)の設定

降ってくる玉の設定です。
ゲームスタート後の動きを作っていきます。
上から何個も降ってくる設定を、クローンのブロックで設定します。
下の2つを用意しましょう。

Sキーのスタートのとき自分自身を分身させる設定(クローン)を作ります。玉の出現タイミングをばらけさせたいので、乱数ブロックで0.5秒~1秒と指定してみました。スタート時に玉はない状態にするので隠すブロックもつけましょう。

ここからクローンされた後の設定です。「クローンされたとき」ブロックの後に作っていきます。まずクローンの大きさ、登場場所を設定します。登場場所は上の方から、横はランダムに発生してほしいので、x座標は乱数ブロックで指定しましょう。

Earthに向かって進んでいき、端に触れたらクローンを削除します。

全体として以下のようになればOKです。

上記とは別で、スコープにあたったときは玉が消える条件を作ります。以下のようにします。

これで玉の設定は完成です。これでスプライトの設定は全て終了ですが、このままだと永遠に弾を消さないといけないので、最後に時間の設定をしましょう。

時間の設定


プログラムを作る前に下準備です。時間というブロックはないので、変数を作る必要があります。「変数を作る」ボタンを押して名前を「タイム」にします。

すると変数ブロックで「タイム」を選択できるようになります。

ここからプログラムを組み立てていきます。時間が減っていく仕組みを作っていきましょう。15秒に設定して、1秒ずつ減っていくようにします。

このままだとマイナス以降もカウントするので、0秒になったらゲーム停止する仕組みを作ります。

全体として以下のようになったら完成です。15秒地球を守れば勝利音楽が鳴ってゲーム停止します。

今回は地球防衛ゲームを作ってみました。クローンの仕組みなど応用してゲーム作りに挑戦してみてください。

随時体験会を実施してますので、ご応募いただければと思います!

コメントを残す

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

This field is required.

This field is required.

CAPTCHA