シューティングゲームを作っていく中で弾丸を1発ずつ発射させるだけであれば、比較的簡単にプログラムできると思います。
しかし、シューティングゲームであれば必ず連射したいと思いますよね?
そこで今回は「クローン」を使って、弾丸を連射する動きを実現する方法を紹介します。
この記事を読んでいただくと、シューティングゲームで弾丸を連射させるスクリプトの作り方が分かります。
なお、この記事で使用しているスプライト(キャラクター・背景・オブジェクト・音声など)はすべてパブリックドメインの無料の素材をダウンロードして使用しています。
スクリプトの作り方
完成した動き
スペースキーを押している間、弾丸を連射させています。
自機(キャラクター)は、上下左右矢印キーまたはWSADキーで移動させることができます。もちろん移動中でも連射は可能になっています。
完成したスクリプト
完成したスクリプトの全体です。スプライトは「背景」「自機」「弾丸」の3つです。
この章の内容をご自身のScratch環境に反映すれば、同じ動きを再現することができます。
【スプライト】
シューティングゲーム用の背景・キャラクター・アイテム等の画像や音声は、パブリックドメインである「スーパーパワーアセットパック(CC0)のspace-shooter」を使っています。
【背景のスクリプト】
背景のスクリプトはありません。大きさを150%または160%に拡大して使用しています。
【自機のスクリプト】
自機のスクリプトは、ステージ上を上下左右に移動させるプログラムだけです。
【弾丸のスクリプト】
連射に必要なプログラムは、すべて「弾丸スプライト」の中だけで実現しています。
スクリプトの説明
プログラムを作っていく中でポイントとなる部分を説明します。(背景スプライトと自機スプライトの説明は省略します)
ポイント①:弾丸の座標を自機の座標と一致させる
弾丸は自機スプライトから発射しているように見えないと自然ではありません。
そのためには弾丸スプライトの座標と自機スプライトの座標を常に(ずっと)一致させておく必要があります。
ただし、弾丸が自機の先端から発射されるように見せたいので「Y座標を(自機のY座標+15)」として少し位置を上方向にズラします。これをしないと自機の中心から弾丸が発射されるように見えてしまいます。
【弾丸のスクリプト】
ポイント②:弾丸クローンを連続でつくる
スペースキーが押されている間は0.05秒おきにずっとクローンを作り続けるようにします。
【弾丸のスクリプト】
ポイント③:クローンを動かして最後に削除する
弾丸クローンが作られるたびに表示して上方向に10歩ずつ動かし続けます。そして最後にクローンを削除します。
クローンの使い方のコツは、クローンを作ることは元のスプライト側でプログラムし、クローンそのものの動きは「クローンされたとき」ブロックの下にプログラムを作るようにすることです。
【弾丸のスクリプト】
最後の「このクローンを削除する」ブロックは非常に重要です。理由は、Scratch3.0の仕様ではステージ上に存在できるクローンの上限数は300個までと決められているためです。
ここまでのポイントを押さえてスクリプトを組むことが出来たら、シューティングゲームで弾丸を連射させるプログラムは完成です!
失敗しやすいポイント
ステージ上に同時に存在できるクローンの上限数は300個までと決まっています。
そのため、下図のように「クローンを削除」ブロックではなく「隠す」ブロックにした場合、クローンは削除されずに隠れているだけでまだ存在しており、この状態だといずれ上限数の制限に引っ掛かってしまい途中で弾丸が出てこなくなってしまいます。
応用編
上で紹介したプログラムを改良して、PowerUpアイテムを入手すると弾丸をパワーアップさせるようにしました。
※上下左右の矢印キーまたはWSADキーで上下左右移動、スペースキーで弾丸を連射します。
まとめ
さいごに、今回の記事で説明した『シューティングゲームで弾丸を連射させるスクリプトの作り方』のポイントをまとめます。
- ポイント①:弾丸の座標を自機の座標と一致させる(弾丸の発射位置を微調整する)
- ポイント②:弾丸クローンを連続でつくる
- ポイント③:クローンを動かして最後に削除する(クローンの役割が終わったら削除を忘れずに)
どうでしたか?上手く再現できたでしょうか?
他にも役に立つTips(ティップス)記事をたくさん書いてますので、ぜひ見てみてください。(記事のタイトルに「Tips」と書いていたり「Tips」タグを貼ってあります)