Scratchから始めるシューティングゲームの作り方⑦〜敵の落としたアイテムでパワーアップさせてみる


※ 当ページには【広告/PR】を含む場合があります。
2022/08/23
Scratchから始めるシューティングゲームの作り方⑥〜ステージに敵を配置する・高度な当たり判定を設定する
Scratchから始めるシューティングゲームの作り方⑧〜ステージボスを追加する
合同会社タコスキングダム|TacosKingdom,LLC.

Scratchで本格的なシューティングゲームを作成することを目指すシリーズ記事も今回で第7回目になります。

前回までで、敵をステージ(フィールド)に柔軟に配置するパターンを作成できました。

ということで、特定の敵がドロップするアイテムも追加し、プレーヤーのパワーアップするような仕組みをこの記事で考えていきます。

なお、Scratchシューティングゲームの作り方のシリーズ最初の記事は以下のリンクを参考にしてください。

合同会社タコスキングダム|タコキンのPスクール
Scratchから始めるシューティングゲームの作り方①〜最初のプロジェクトを作成

シューティングゲーム作成を通じてScratchでプログラミングを学習していきましょう。

今回も前回までと同様に、直前まで開発途中のプロジェクトを改造しながら解説していきます。

参考|シューティングゲーム⑥


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

敵の出現リストにドロップアイテムも追加する

前回の敵の出現パターンのリストを作成したときと同じ要領で、新しい定義ブロック・「ドロップアイテムの初期化」を作成するところから始めましょう。

合同会社タコスキングダム|タコキンのPスクール

さらに、
背景のスプライトに新しいリストとして、ローカルリスト・「_ドロップアイテム」を追加します。

合同会社タコスキングダム|タコキンのPスクール

_ドロップアイテムのリストは、フィールドに配置した特定の敵がドロップするアイテムの番号を記録していくリストになります。

ひとまず敵は何もアイテムを落とすことが無いという意味を、「0」として、この
_ドロップアイテムリストを以下のようにしておきます。

合同会社タコスキングダム|タコキンのPスクール

赤枠で囲ったリストを初期化する部分が、
背景のスプライトのブロックコードに追加した箇所です。

もちろんここでも、他の敵の出現リストと同数の要素数が必要です。

既にこの時点で、初期化すべきリストが3つもあると、1.5秒ほど待機を強いられてしまいます。

できるだけゲーム開始の初期に、リストの初期化を持ってくるほうがその他の処理の邪魔にならずに済みます。

合同会社タコスキングダム|タコキンのPスクール

この時点では、まだアイテムのドロップは実装していませんので、以降の項目でアイテムを一つずつ追加していきます。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

残りライフを回復させるアイテム

まずは定番のプレーヤーの残機を1つ回復させるアイテムから作成してみましょう。

このアイテムの識別番号は「1」にします。

まずは、
「アイテム」という名前で、新しいスプライトをScratchプロジェクトに追加しましょう。

合同会社タコスキングダム|タコキンのPスクール

アイテムとして表示されるコスチュームも適当に描いておきましょう。

合同会社タコスキングダム|タコキンのPスクール

アイテムは小さいのでさほどデザインにこだわる必要はないので、他のスプライトのコスチュームからコピーしてきた画像を貼り付けるだけでもOKです。

このスプライトは、敵スプライトのクローンが生成される直前に、ローカル変数・
「_ドロップアイテム」をクローン初期化に読み込むことで、そのクローン消滅時にドロップするアイテムの種類を内部で選択できるようにさせてみます。

合同会社タコスキングダム|タコキンのPスクール

クローンを外部から呼び出すため、敵のクローンのローカル変数の
「_ドロップアイテム」を初期化するには、プログラムが共通で使えるグローバル変数・「ドロップアイテム」が必要になります。

合同会社タコスキングダム|タコキンのPスクール

この2つの変数を上手く使うことで、各敵のクローンが個別にどのアイテムをドロップするのかを割り振ることができるようになります。

まずは
背景のブロックコード側では、グローバル変数のドロップアイテムを使って、以下のように修正します。

合同会社タコスキングダム|タコキンのPスクール

ドロップアイテムの値を、敵のクローンよりも手前に持ってくることがここでのミソです。

次に、
のスプライトのクローンの処理を以下のように修正しましょう。

少し
のブロックコードが長くなってきたので、ドロップアイテムの処理を先に定義ブロック化をして分割しておきます。

合同会社タコスキングダム|タコキンのPスクール

敵が倒れる際に、ドロップするアイテムの位置と種類の情報を、アイテムのクローン側に渡すために、以下のような3つのグローバル変数・
「アイテムの番号」「アイテムのx座標」「アイテムのy座標」、を追加しておきましょう。

合同会社タコスキングダム|タコキンのPスクール

弾に当たって敵が消える処理の手前に、これらのグローバル変数をクローン内部で更新されるように、ドロップアイテムの処理を挿入します。

合同会社タコスキングダム|タコキンのPスクール

ではここから
アイテムのスプライトのコードも実装します。

アイテムは一つ一つ作用が違うので、その作用を他のスプライトへ共有するためのイベントをそれぞれのアイテムに作る必要があります。

例えば、「ライフを一つ回復させる」ためのイベントは、以下のように
「ライフを回復」イベントとして追加します。

合同会社タコスキングダム|タコキンのPスクール

アイテムのスプライトは、以下のようなブロックコードに編集します。

合同会社タコスキングダム|タコキンのPスクール

各ドロップアイテムは、クローン直後にローカル変数・
_ドロップアイテムに、撃破した敵から受け取ったグローバル変数・アイテムの番号を保持しています。

さらにクローンごとに
_ドロップアイテムの識別番号で、処理の挙動を条件で分けることができます。

例えば
[_ドロップアイテム] = 1のときに、回復アイテム(ハートのコスチューム)を設定し、プレーヤーがそのアイテムに触れたときに、アイテム効果がイベントを通して、他のスプライトへ共有されます。

ここでは、ライフを回復するので、
ライフを回復イベントは、ライフのスプライトで受け取り、イベントの処理をさらに実装しないといけません。

ということで、
ライフのスプライトにイベントの処理を以下のようなブロックコードを追加しましょう。

合同会社タコスキングダム|タコキンのPスクール

このブロックコードの処理を理解するは、Scratchの初心者〜中級者のレベルかなり難しいかもしれません。

おそらく、
Scratchプログラミングでも最難関に難しいテクニックの一つでしょう。

ポイントだけ解説しますと、まずScratchの
イベントは、プログラムに存在する全てのスプライトと背景、クローンに発信されます。

ライフのスプライトは、クローンが既に複数存在しているので、イベントを何も処理しないままつかうと、全てのクローンが、同じ処理を同時にやってしまう恐れがあります。

そこでここでは、クローンの識別番号を使って、一つのクローンだけにイベントが適用されるように、
もし [_残り] = [残り - 2]ならブロックで、一番右端のハートのクローンだけをターゲットとしています。

さらに注意が必要なのが、Scratchの
「クローンから別のクローンを呼び出す」ときの暗黙的な独自ルールの存在です。

クローンは「自分自身」のクローンを複製したときに、「自分自身」は自己消滅してしまうというものです。

ここではライフのクローンを右に1つ増やしたいだけですが、クローンを呼び出したクローンも消えてしまうので、対策として、
「自分のクローン」を同じ位置に複製して、更にもう一つ「自分のクローン」を複製して使う、ということをやっています。

合同会社タコスキングダム|タコキンのPスクール

これで、アイテムの番号が1に割り振られたクローンが、敵が倒された際に、ライフが1つ回復するアイテムをドロップできるようになります。

テストとして、
背景のスプライトの_ドロップアイテムのリストで、ドロップアイテムの番号を1に変えてみます。

合同会社タコスキングダム|タコキンのPスクール

これでプログラムを走らせると、

合同会社タコスキングダム|タコキンのPスクール

というように、敵がアイテムを落として、ライフを回復させることができるようになりました。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

打てる弾をパワーアップする

前の記事で、弾のバリエーション強化に関して先行して解説していたことがありました。

合同会社タコスキングダム|タコキンのPスクール
Scratchから始めるシューティングゲームの作り方②〜弾の連射を自在にカスタマイズする

Scratchのシューティングゲームで、弾をより高度に作り込んでみましょう。

ここでようやく弾のバリエーションを作っていた内容と合流することになります。

とりあえず弾を強化するアイテムを以下のアイテム番号に割り振ります。

            
            - 弾2 = 2
- 弾3 = 3
- ビーム = 4
        
弾を変える実装はとても簡単で、グローバル変数・「弾の種類」の番号を切り替えるだけになります。

アイテムのスプライトに以下のブロックコードに修正しましょう。

合同会社タコスキングダム|タコキンのPスクール

あとは
背景のスプライトの_ドロップアイテムのリストを以下のように変更してテストをしましょう。

合同会社タコスキングダム|タコキンのPスクール

ちゃんとドロップアイテムを拾うことで、弾の種類が切り替えられたらOKです。

合同会社タコスキングダム|タコキンのPスクール

ようやく弾を切り替えられるようになり、よりシューティングゲーム感が増しました。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

まとめ

以上、今回のScratchシューティングゲームの改造内容をひとまとめにしたものは以下のようになります。

※最初にゲームをスタートすると、スペースキーを押しても弾が出ない場合があります(...バグ?)。そんなときは、お手数ですが、一旦プログラムをストップして、もう一度スタートしてみてください。

アイテムはアイデア次第で、いろんなパターンが考えられますので、面白いアイデアが思いついたらぜひともご自分の手で実装してみてください。