[Departure from the Void] 敵弾の発射クラス設計中

今日は敵弾の発射を管理するためのクラス設計を考えていました。

以下、途中結果ですが敵弾の発射クラス図です。

20170224_1

敵弾の発射はShooterクラスが行います。
Shoot()の呼び出しで敵弾が一回発射されるようにしました。
引数には発射する敵弾(Prefab)、発射速度(初速)、発射位置を指定します。

Shooterの派生クラスにより実際の敵弾の発射パターンが実装されます。
DirectionalShooterは以下の発射方向を設定できるShooterクラスです。

  • 固定速度:予め指定された固定のベクトルに敵弾を発射する
  • 自機への発射:自機に向けて敵弾を発射する
  • 前方へ発射:自分の前に向けて敵弾を発射する

DirectionalShooterクラスで上記指定された発射方向から発射速度を計算し、OnShoot()を実行します。
OnShoot()はDirectionalShooterの派生クラスが実装します。

Shooter.Shoot()の呼び出し管理はShooterInvokerクラスが管理します。
ShooterとShooterInvokerにクラスを分ける理由は発射タイミングと発射処理の管理を完全に分離させるためです。
こうすることで、多彩なパターンの敵弾を自由なタイミングで発射できるようになります。

明日はこれらのクラスを実装し、自機を敵弾で攻撃する敵の実装もできたらと思います。