多方向うずまき弾幕の作り方

多方向たほうこううずまき弾幕だんまくつくかた

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

紹介日
2020.2.9

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

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

この弾幕の作り方

所要時間: 10分.

うずまき弾幕を多方向に展開することで、弾幕を厚くします。ここまでやるとかなり「弾幕感」がでてきます。

  1. 変数を初期化する

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

    変数の初期化

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

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

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

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

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

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

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

  4. 各列が発射される方向を指定する

    どちらに向かって発射されるのかを指定します。1つ1つ指定するのではなく、変数を一定の法則に従って計算することで角度を自動で決定しています。
    発射角度の初期値というのが、どちら向きに発射されるのかという変数です。これはここで決定したらもう変えません。
    計算方法は、発射角度の初期値(最初は0)に360度(円)を列数で割った数を指定します。
    360度を列数で割るというのは、たとえば6列なら360÷6=60となり、これに「発射角度の初期値」を足します。つまり60度ずつ変えて弾幕を発射することになります。

    したがって、6列の場合は以下のように角度は指定されます。
    ・1列目は、0 + (360 ÷ 6) = 60度
    ・2列目は、60 + (360 ÷ 6) = 120度
    ・3列目は、120 + (360 ÷ 6) = 180度
    ・4列目は、180 + (360 ÷ 6) = 240度
    ・5列目は、240 + (360 ÷ 6) = 300度
    ・6列目は、300 + (360 ÷ 6) = 360度

    列ごとに角度を変える
    列ごとに角度を変える

  5. 第一回クローン処理

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

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

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

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

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

  7. 発射角度を指定する

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

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

  8. 弾のクローンを作る

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

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

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

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

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

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

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

    弾幕のコアな実装
    弾幕のコアな実装

紹介日
2020.2.9