n-way弾幕の作り方

n-wayえぬうぇい弾幕だんまくつくかた

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

紹介日
2020.2.9

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

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

n-way弾幕を作る基本

所要時間: 10分.

n-way(エヌウェイ)のn(エヌ)とは、数字の代わりによく使われるアルファベットです。厳密なルールはありませんが、2以上の数字が入ることが多いでしょう。そしてway(ウェイ)とは「方向」という意味の英単語です。つまりエヌウェイとは「いくつかの方向」というような意味合いになります。ここからは複数の方向に向かって射出される弾幕を紹介していきます。

  1. 変数を初期化する

    変数を用意して、一箇所にまとめておきます。一箇所にまとめておくことで、微調整しやすく、数カ月後に見てもどの数字が何の役割を持っているのか、カンタンに思い出せます。スクラッチに限らず、「見たら思い出しやすく作る」というのはプログラムを作るときの心得の1つです。

    変数を初期化
    変数を初期化

  2. 弾幕の本命処理を作る

    弾幕を作る処理を、別途「緑の旗を押したら」ブロックを配置して作ります。

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

  3. 複数方向に発射する準備をする

    発射弾数の数だけ弾を出したいので、「◯回繰り返す」ブロックでクローン生成処理を囲います。
    また、1弾ずつ角度を変えることで別方向に飛ばしたいので、発射角度に「角度の変化」変数を加算していきます。

    n-wayに対してクローン生成
    n-wayに対してクローン生成

  4. 最後にメッセージを送る

    発射弾数の数だけクローンを生成してから、メッセージを送ります。うずまき弾幕との最も大きな違いがここでしょう。メッセージを使わなければ、弾は一発ずつ微妙にずれて発射されます。n-way弾幕では一斉に射出する様が美しいので、射出タイミングにはこだわってメッセージ化しておきます。

    タイミングを合わせるべくイベントを使う
    タイミングを合わせるべくイベントを使う

  5. 毎回、発射角度を初期化する

    次のループに備えて、発射角度を初期化します。ここでは添付画像のように変数を使って初期化していますが、単純に180度や−90度といった数値を手書きしても構いません。
    発射角度を初期化

    tips tips
    なぜ変数を使って初期化しているかと言うと、数値を直接書く方法では、発射角度を微調整するときに2箇所変更する必要があるからです。2箇所というのは、#01で最初に定義したところと、当ステップです。変更箇所が多ければ多いほど、バグの温床になります。うっかり変え忘れてしまうのです。こう言うと間抜けに聞こえますが、プログラミングで一番多いバグの原因が「うっかり」といっても過言ではありません。

  6. 発射のタイミングを調整する

    ゼロ秒でもOKです。

    タイミング調整
    タイミング調整

  7. 弾幕の生成処理を作る

    一斉発射に備えて、クローンの生成を終えておきます。ここで発射してしまうと、最初の弾と最後の弾で射出タイミングがズレてしまいます。

    ショットの処理、でも動かさない、生成するだけ
    ショットの処理、でも動かさない、生成するだけ

  8. 一斉発射の処理を作る

    メッセージを受け取ったら、いざ発射です。しかし、「本体かどうか」変数を使って弾クローンだけが動くようにコードを組み合わせます。

    イベントに合わせて足並みを揃えて一斉に発射する
    イベントに合わせて足並みを揃えて一斉に発射する

密集n-way弾幕を作る場合

少し変数を変えるだけで弾幕を密集させることができます。これは別弾幕とは呼べないかもしれませんが、密集させるだけで少し毛色が変わるので紹介しておきます。

以下のように変数を調整すれば実現できます。あとは上述したn-way弾幕の作り方と同じです。

密集n-way弾幕を作る変数の設定方法
密集n-way弾幕を作る変数の設定方法

変数の調整だけで見た目がガラリと変わるのが弾幕の面白みのひとつです。

ランダムn-way弾幕を作る場合

ランダムに発射弾数を設定する
ランダムに発射弾数を設定する
紹介日
2020.2.9