今回の記事では、前回に引き続きスクラッチでシューティングゲームを作っていきます。
後編で取り組む内容は、以下の通りです。
- インベーダーを3体に増やす
- ブレッドが貫通しないようにする
- インベーダーを倒したら、コスチューム(見た目)を変える

まだ、前回の記事を読んでいない方は、下記の記事から先に読んでください!
それでは、さっそく後編のゲーム作りを始めていきましょう。
Table of Contents
【最初】シューティングゲームの素材をダウンロードしよう!
まず、インベーダーをもう2体増やすので、インベーダーの画像をダウンロードしましょう。

画像は、私が作った完全オリジナルの素材です。
どのような用途で使用しても構いませんので、安心してお使いください!
【スクラッチ】シューティングゲームの作り方①インベーダーを3体に増やす
現在は、以下の画像のように、プレイヤーと黄色のインベーダーがいるはずです。

ここに、インベーダーを2体増やして、合計3体のインベーダーにしましょう。

ダウンロードしておいた上記の2つのインベーダーをアップロードしてください。

アップロードができたら、上記のように、インベーダーに名前をつけておきましょう。
【スクラッチ】シューティングゲームの作り方②追加したインベーダーの動きを作る
現状では、インベーダーが追加されただけで、何もプログラムが作られていません。
とは言っても、一から作る必要はなく、インベーダー1のプログラムを全部コピペしましょう。

上記のように、インベーダー1のスプライトを選択した上で、「右クリック→コピー」または、ctrl+Cでプログラム全体をコピーしてください。
Mac OSを使用している方は、command+Cでコピーできます。

次に、インベーダー2を選択した上で、真ん中のコードを書く部分に、貼り付けてください。
すると、上記のようにインベーダー1と同じプログラムが出てくるはずです。
インベーダー3にも同じように設定してください。
それぞれのインベーダーの動きをバラバラにしたい場合は、「5歩動かす」の「5」を好きな数字に変えておいてください。
【スクラッチ】シューティングゲームの作り方③ゲームオーバー判定を設定し直す
全てのインベーダーの動きは設定できましたが、現状だとゲームオーバー判定が以下のようにインベーター1だけとなっています。

そのため、ゲームオーバー判定を別のやり方で設定し直していきます。
まずは、インベーダー1を選択して以下の画面に切り替えておきます。

上記のように、新しくプレイヤーに触れた時の条件を作っておきます。
合わせて、「ゲームオーバーを送る」のメッセージを作って設定しておいてください。
作ることができたら、新しく作った条件のブロックをコピーしておきます。

インベーダー2を選択して、コピーしたプログラムを貼り付けます。
インベーダー3にも、同じように貼り付けておきましょう。

最後に、プレイヤーを選択して、いらないプログラムを消しておきます。
そして、新しく「ゲームオーバーを受け取った時」をイベントから持ってきておいてください。
さらに、上記のように、プレイヤー以外のスクリプトを止める。
プレイヤーがゲームオーバーと1秒間発言。
その後にゲームが完全に止まるようにしておきましょう。
【スクラッチ】シューティングゲームの作り方④ブレッドが貫通しないようにする
現状では、ブレッドがインベーダーに当たると、「当たった!」とやっつけることができるようになっています。
しかし、ブレッドがそのまま貫通してしまうので、これを直していきましょう。

インベーダー1を選択した状態で、イベントの「ブレッドに当たったを送って待つ」を上記のように、差し込んでおきます。
「ブレッドに当たった」を新しくメッセージ作っておいてください。
インベーダー1に差し込んだら、インベーダー2とインベーダー3にも「ブレッドに当たったを送って待つ」を同様に入れておきます。

今度は、上記のようにブレッドのスプライトを選択した状態にしておいてください。
イベントの「ブレッドが当たったを受け取ったとき」を配置します。
そして、インベーダー1に触れた時には、ブレッドを破壊するようにしましょう。
同様に、インベーダー2とインベーダー3の条件も作っておきます。
これで、ブレッドがインベーダーを貫通することはなくなりました。
【スクラッチ】シューティングゲームの作り方⑤コスチュームをアップロードする
次は、インベーダーにブレッドが当たったら、やられたことがわかるように、違うコスチュームに切り替えましょう。

インベーダー1の「コスチューム(画面左上)」を選択した状態で、上記のやられた画像をアップロードしてください。

インベーダー2も同様に、インベーダー1の「コスチューム(画面左上)」を選択した状態で、上記のやられた画像をアップロードしましょう。
インベーダ−3も同じ手順で画像をアップロードします。

ちなみに、アップロードすると、やられた画像が表示されてしまう可能性があります。
コスチュームでインベーダーの方を選択しておけば、そちらが優先して表示されます。
・インベーダー1とインベーダー1-A
・インベーダー2とインベーダー2-A
・インベーダー3とインベーダー3-A
今回の記事では、このように名前を変更しています。
わかりやすいように、上記のように名前を設定しておくことをおすすめします。
【スクラッチ】シューティングゲームの作り方⑥インベーダーのコスチュームを切り替える
画像をアップロードしたら、実際にコスチュームを切り替えていきましょう。

次に、アップロードしたコスチュームを切り替えるプログラムを追加します。
インベーダー1を選択した状態で、見た目から「コスチュームをインベーダー1-Aにする」にします。
そして、「当たった!」と発言した後に、コスチュームをもとに戻しましょう。
なお、「隠す」はいらないので、外に出して削除しておいてください。

さらに、もともとのコスチュームに戻ったタイミングで、インベーダーが復活する場所を決めておきたいです。
今回は、y座標が180で、x座標が-200〜200と幅を持たせて設定しました。
こうすることで、インベーダーが復活するたびに、画面の上部から登場するようになります。

x座標の設定の仕方は、演算の乱数を設定できるものを引っ張ってきて、活用してください。
まとめ:乱数を使えると、初心者を脱却できる
ここまで、シューティングゲームの作り方を詳しく解説しました。
後編では、乱数を使って、x座標の位置に幅を持たせることを行いましたが、あまり慣れない考え方で大変な方もいたでしょう。
しかし、上手に使えたら、ゲーム性をより高められるので、ぜひ活用してみてください。
なお、今回作ったゲームでも十分なクオリティですが、さらに難しくしたい方は、発展編の記事も読み進めてみてください。