【Scratch 3.0】シューティングゲーム 誘導ミサイルを発射する方法(連射なし)(Tips)

スポンサーリンク
シューティングゲーム 誘導ミサイルを発射する方法(連射なし)_m

シューティングゲームでは自機キャラクターの攻撃手段として、機銃で弾丸を連射するほかにミサイルでの攻撃もあると思います。

弾丸の連射についてはすでにこちらの記事で説明済みなので、今回はミサイルを発射するプログラムを作ってみたいと思います。

単純にミサイルを発射するのでは面白くないので、敵に追従する誘導ミサイルの動きを再現することにチャレンジします。

この記事を読んでいただくと、シューティングゲームで攻撃に使える誘導ミサイルのスクリプトの作り方が分かります。

なお、この記事で使用しているスプライト(キャラクター・背景・オブジェクト・音声など)はすべてパブリックドメインの無料の素材をダウンロードして使用しています。

シューティングゲームとは

シューティングゲームとは、戦闘機・宇宙船・ロボットなどを操作して、レーザー・ミサイル・銃などの武器を用いて敵を射撃(シューティング)しながら進んでいくゲームの総称(国内での略称は「STG」)。画面上に大量の弾丸が飛び交うものは「弾幕シューティング」と呼ぶ。

スクリプトの作り方

完成した動き

キーボードの「Z」キーを押すとミサイルを発射します。連射ができないように「Z」キーを押すたびに一発ずつ発射するようにしています。

自機(キャラクター)は、上下左右矢印キーまたはWSADキーで移動させることができます。もちろん移動中でも発射は可能になっています。

シューティングゲーム 誘導ミサイルを発射する方法(連射なし)-完成-GIFアニメ

完成したスクリプト

完成したスクリプトの全体です。スプライトは「背景」「自機」「敵機1」「ミサイル」の4つです。

この章の内容をご自身のScratch環境に反映すれば、同じ動きを再現することができます。

【スプライト】

シューティングゲーム用の背景・キャラクター・アイテム等の画像や音声は、パブリックドメインである「スーパーパワーアセットパック(CC0)のspace-shooter」を使っています。

【背景のスクリプト】

背景のスクリプトはありません。大きさを150%または160%に拡大して使用しています。

【自機のスクリプト】

自機のスクリプトは、ステージ上を上下左右に移動させるプログラムだけです。

【敵機1のスクリプト】

敵機はステージの上から下に一直線に移動する動きにしています。X座標は一定の範囲でランダムな値にしています。クローンは使っていません。

【ミサイルのスクリプト】

「Z」キーを押すとミサイルのクローンを作成して、敵機に向かって移動し続けます。

スクリプトの説明

プログラムを作っていく中でポイントとなる部分を説明します。(背景・自機・敵機1スプライトの説明は省略します)

ポイント①:ミサイルの座標を自機の座標と一致させる

ミサイルは自機スプライトから発射しているように見えないと自然ではありません。

そのためにはミサイルスプライトの座標と自機スプライトの座標を常に(ずっと)一致させておく必要があります。

ただし、ミサイルが自機の先端から発射されるように見せたいので「Y座標を(自機のY座標+15)」として少し位置を上方向にズラします。これをしないと自機の中心からミサイルが発射されるように見えてしまいます。

【ミサイルのスクリプト】

ポイント②:ミサイルクローンを一発ずつ発射する(連射しない)

「Z」キーを押すとクローンを1つ作ります。次のクローンを作るには「(Zキーが押された)でないまで待つ」、つまり「Zキーが離されたまで待つ」必要があるので、これで連射はできなくなります。

【ミサイルのスクリプト】

ポイント③:ミサイルを敵機に向けて動かす

クローンが作られたら、クローンを動かすためのスクリプトを作ります。

「もし(敵機1のY座標<-160)なら」の条件は、敵機がステージの下端まで移動するとステージから消えるようにプログラムしているので、敵機がステージから消えた場合を意味しています。逆に「でなければ」以降は敵機がステージ上を移動している状態を意味しています。

そのため、敵機がステージ上を移動中は常に「敵機1へ向ける」と「5歩動かす」ブロックが動くので、敵機が移動したらミサイルの向きも変え続けるプログラムになっています。

一方で敵機がステージ下端まで移行してステージから消えたら、その時点で向きは変わらずに「5歩動かす」ブロックだけが動くのでミサイルは直進するようになります。

【ミサイルのスクリプト】

ポイント④:クローンは使い終わったら削除する

ミサイルはステージの端に触れるか敵機に触れたら消す必要があるので、その条件にマッチしたら「○○まで繰り返す」ブロックを抜けるようにします。そしてクローンを削除します。

最後の「このクローンを削除する」ブロックは非常に重要です。理由は、Scratch3.0の仕様ではステージ上に存在できるクローンの上限数は300個までと決められているためです。

ここまでのポイントを押さえてスクリプトを組むことが出来たら、シューティングゲームで使う誘導ミサイルのプログラムは完成です!

失敗しやすいポイント

ミサイルのスプライトをつくる時の向きに注意が必要です。

普通は上向きにコスチュームをつくると思いますがこれでは失敗します。なぜならScratchの仕様で、スプライトを作成した時点で向きは90度になっているからです。

そのため、コスチュームをつくる時には90度(右真横)に向けて作る必要があります。

下の図(アニメーション)は上の図のように上向きでコスチュームを作った場合の動きです。この場合、左回りに90度向きがズレて表示されてしまっています。

シューティングゲーム 誘導ミサイルを発射する方法(連射なし)-失敗-GIFアニメ
失敗例

応用編

上で紹介したプログラムを改良して、PowerUp「Bマーク」アイテムを入手するとミサイルをパワーアップさせるようにしました。

また、別の記事で紹介している「弾丸を連射する方法」のプログラムも組み合わせました。

※上下左右の矢印キーまたはWSADキーで上下左右移動、スペースキーで弾丸を連射、Zキーでミサイルを発射します。

シューティングゲーム 誘導ミサイルを発射する方法(連射なし)-応用-GIFアニメ

まとめ

さいごに、今回の記事で説明した『シューティングゲームで攻撃に使える誘導ミサイルのスクリプトの作り方』のポイントをまとめます。

  • ポイント①:ミサイルの座標を自機の座標と一致させる(弾丸の発射位置を微調整する)
  • ポイント②:ミサイルクローンを一発ずつ発射する(連射させない)
  • ポイント③:ミサイルを敵機に向けて動かす(敵機が動いたらミサイルの向きも変える)
  • ポイント④:クローンは使い終わったら削除する

どうでしたか?上手く再現できたでしょうか?
他にも役に立つTips(ティップス)記事をたくさん書いてますので、ぜひ見てみてください。(記事のタイトルに「Tips」と書いていたり「Tips」タグを貼ってあります)

この記事が『よかった/役に立った』と思ったら、左下のGoodボタンを押していただけると嬉しいです。

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