前書き
Unityで弾幕シューティングゲームを作りたい場合に使用されることが多いアセットとして「UniBulletHell」というアセットがあります。このアセットはいろいろな弾道が設定されており、所定の弾道を設定することで好きな方法で弾道を設定できるアセットになっています。
基本的には弾幕系シューティングゲームに使われるアセットですがTopDown2Dアクションゲームでも同じような使用感で使えるため本記事では、UniBulletHellの使い方、実際に弾幕を生成するサンプル例まで紹介していこうと思います。
UniBulletHellの基本的な使い方
UniBulletHellの使い方は非常に簡単です。弾を発射するShotControllerと発射パターンを管理するUbhBaseShotを設定すればすぐに弾幕を作ることができます。
UniBulletHellを動かす基本手順は
- UniBulletHellのShotControllerコンポーネントを追加する
- UbsBaseShotを設定する
- 実行して弾幕を確認する
以上になります。
基本的にコンポーネントを付与すれば使える簡単な作りになっています。ただし、弾道を途中で止めてから再開したいなどやりたい場合は個別に関数を実行する必要がありますがとりあえず動きが見てみたい場合は上記の方法でOKです。
では早速、上記の手順を使ってUniBulletHellを動かしてみましょう。
UniBulletHellのShotControllerコンポーネントを追加する
まず、弾を発射するためのShotControllerコンポーネントを追加しましょう。追加する方法としては特定のオブジェクトを選択後に、
Component->UnibulletHell->Controller->ShotController
を選択すれば追加できます。今回はSquareというオブジェクトに追加してみました。

追加すると以下のようにShotControllerコンポーネントが追加されます。まだこの段階ではWarningが出ていますがこの後に設定するUbsBaseShotを追加することでWarningも消えますので一旦無視しても大丈夫です。

UbsBaseShotを設定する
続いて、様々な弾道が設定されているUbsBaseShotを設定します。設定する方法としては以下のShotListにあるためデフォルトだと”0″になっているところを”1″にしてみましょう。

そうするとUbhBaseShotというクラスを設定できる項目が出てきます。このUbhBaseShotというのがいろいろな弾道が設定されているクラスになります。UbhBaseShotは以下のフォルダに格納されているオブジェクトになります。
UniBulletHell->Example->Prefab->ShotPattern

今回はこのフォルダにあるRandomShotというオブジェクトを使おうと思います。RandomShotをShotControllerコンポーネントがあるオブジェクトの子オブジェクトとして設定します。

上記の状態でShotControllerコンポーネントのShotListにあるShotObjに先ほど設定したRandomShotをアタッチします。

また、初期設定だとLoopが有効になっています。Loopが有効になっているとAfterDelayに値を入れないとWarningが出てしまうのでまずは”1″を入れてみましょう。Warningが出ないことが確認できますね。

上記の状態で動かしてみると以下のようにSquareから黄色い弾幕が発生するようになります。ここまでできれば動作確認としてはOKです。

弾道のパラメータを変更する
設定したRandomShotの下の方にRandomShotSettingsがありここで出力される角度やスピードなどを変更することもできます。今回の設定はRandomShotなので以下のようになっていますが、それぞれの弾道によって設定できる内容も異なりますので色々動かしてみてください。

動画で確認をしてみる。
2分近く少々長いですが、設定から動作確認までを動画にまとめてみました。こちらも参考にご確認ください。
まとめ
今回は、UniBulletHellの始め方についてまとめました。
UniBulletHellは弾幕シューティングやTopDownアクションゲームで使える弾幕系セットアップツールになります。コンポーネントの追加と設定だけで、直線、ランダム、追尾など様々な弾道を簡単に実装することが可能であり、各弾道の設定を調整することで自分好みの弾道パターンを作ることも可能です。
ボスの攻撃がいまいち単調になってきたな…と思ってきたらUniBulletHellを試してみはいかがでしょうか?
コメント