両回転うずまき弾幕の作り方

両回転りょうかいてんうずまき弾幕だんまくつくかた

基本きほん情報じょうほう

紹介日
2020.2.9

コレ以外にも色々な弾幕の作り方はこちらにまとめてあります!

Scratchでの弾幕の作り方9選|東方みたいな弾幕シューティングを作る!

この弾幕の作り方

  • 変数の種類に注意! 変数の種類に注意!

    変数はすべて「このスプライト用」にチェックを入れてください。これはあとから変更できないので、「すべてのスプライト用」で作ってしまった方は、いったん変数を作り直す必要があります。厳密には「本体かどうか」「発射角度」「角度の変化」この3つは「このスプライト用」である必要があります。

    この指摘を書くきっかけになったtsubaki11さん、ありがとうございました。

所要時間: 10分.

うずまき弾幕を左右両方に展開することで、両サイドから襲いかかる弾幕が作れます。数値の調整を行うと一瞬ハート型になるあたりも見ものです。

  1. 変数を初期化する

    弾幕では変数の微調整で動きをゲームに合わせていく作業が多発するので、変数は一箇所にまとめておくと便利です。
    また、一度決めてしまえばゲーム中に変化しないような数値も変数にまとめておくことで後々「この数値ってなんだっけ?」と混乱しないようにできます。
    ・弾の速度=5
    ・角度の変化=5
    ・発射角度=0
    ・発射弾数=72
    ・発射間隔(秒)=2
    ・弾幕の列数=2
    ・本体かどうか=1
    ・発射角度の初期値=0

    変数を初期化

    Tips Tips
    Scratchでは「定数」という概念はありませんが、一度定義したら変えない変数をプログラミングでは定数と呼んで重宝します。逆に、定数にすべきところをそのまま数字をベタ書きしているものはマジックナンバーと呼ばれ、嫌煙されています。Scratchでは特に気にする必要はありません。分かりやすい方法で実装してください。

  2. 改めて「緑の旗が押されたとき」を設置

    変数とは別にまとめておくと分かりやすいでしょう。
    角度、初期位置、初期コスチューム、初期大きさ、などを整えて表示するを選んでおきます。

    弾幕の本命処理
    弾幕の本命処理

  3. 列の数だけ繰り返す処理を追加する

    多方向に展開するので1方向を1列とカウントして、列数の数だけループを回します。4方向に弾幕を出すなら、4列として変数をセットしておきます。

    列数の変数をループに割り当てる
    列数の変数をループに割り当てる

  4. 回転方向を変える

    奇数回と偶数回で、回転する方向を逆転します。具体的には、1回目は右なら2回目は左といった具合に回転方向を変えます。
    この実現方法として、角度の変化にマイナスを掛ける処理を追加します。

    左右の回転を入れ替える
    左右の回転を入れ替える

  5. 第一回クローン処理

    今回はクローンされたときの処理は2つ存在します。
    1つは、本体から直接クローンされた場合。これは弾ではなく、弾の発射準備とも言えます。仮に本体クローンと呼びます。
    もう1つは、本体クローンからクローンされた弾クローンです。

    本体かどうかでクローンの処理を変える
    本体かどうかでクローンの処理を変える

  6. 本体クローンの処理を追加する

    クローンの発射処理を行います。事前に「本体かどうか」を0にしておく。

    本体のクローンは発射処理
    本体のクローンは発射処理

  7. 発射角度を指定する

    さらに、発射角度の初期値を割り当てておきます。これは本体クローンを作る前に指定しておいた値になります。

    まずは弾幕の角度を指定する
    まずは弾幕の角度を指定する

  8. 弾のクローンを作る

    これが2つ目のクローンです。

    さらに弾幕用のクローンを作る
    さらに弾幕用のクローンを作る

  9. 弾のクローンを作るタイミングを調整する

    発射間隔を空けて、弾幕の厚さを調整します。

    弾幕のタイミングの調整
    弾幕のタイミングの調整

  10. 弾クローンの処理を追加する

    クローンされたときの直下においた「もし〜でなければ〜」のブロックの「でなければ」の部分に弾が動く処理を追加します。

    弾幕の移動処理
    弾幕の移動処理

紹介日
2020.2.9