Skip to content
第10回 エフェクトと演出

3 / 4 出来事へエフェクトを接続する

このステップの目的

命中や被弾が成立した位置へエフェクトを表示し、音声と視覚の反応をそろえる

命中位置から生成する

第04回の敵撃破時と第06回の被弾成立時に、EffectManager::Spawn()を呼びます。 Entityがエフェクトを所有せず、Gameが出来事を調停する構造は維持します。

Game.cppcpp
enemy.TakeDamage(tuning::playerShot::Damage);
playerShot.Deactivate();
effects.Spawn(enemy.GetHitbox().GetCenter());
if (!enemy.IsActive())
    ++score;

敵弾がプレイヤーへ命中した場合も、敵弾の位置を中心にエフェクトを生成します。 音声と同じく、入力ではなく出来事が成立した場所へ接続します。

Game.cppcpp
enemyShot.Deactivate();
effects.Spawn(enemyShot.GetHitbox().GetCenter());
if (player.TryTakeDamage())
    sounds.PlaySe(SoundId::Damage);

更新と描画の順序

プレイ中はエフェクトを更新し、描画ではオブジェクトの上へ重ねます。 結果画面でも最後のプレイ画面を背景に残す場合は、エフェクトを含むプレイ描画を再利用します。

チェックリスト
  • 敵撃破時に敵の位置へエフェクトが出る
  • 被弾時に接触位置へエフェクトが出る
  • エフェクトの所有がEffectManagerに集まっている
  • 音声とエフェクトが同じ成立条件へ接続されている