AOE(Area of Effect)

爆発や範囲回復に使うAOE(Area of Effect)。

Ali Elzoheiry氏の敵AIのチュートリアルシリーズの一環です。チュートリアルシリーズとは別枠ですが、このAOEシステムを敵AIのチュートリアルシリーズのPart 13で使います。
この動画単体でもエフェクトを出してヒットさせるまでは可能ですが、ダメージや回復と連動させるために、Ali Elzoheiry氏のダメージシステムの導入と敵AIのチュートリアルシリーズのPart 11までやってから、このAOEシステムを導入した方が効率が良いです。
How to do AOE damage and healing | Unreal Engine 5 Tutorial | ue5 | Youtube

記事は自分でやり直す時のために簡単にまとめており、独自の仕様にもなっていますから、学習するなら参考元のAli Elzoheiry氏の動画を視聴してください。

必要素材

各種エフェクト。
FX Variety Pack:エフェクト – UE マーケットプレイス

爆発音、炎の音、回復の音。
スターターコンテンツ

雷が落ちる位置を示すインジケーター。
Decalを使います。Ali Elzoheiry氏のPatreonで配布しています。
適当なDecalで代用しても良いです。
【UE4/UE5ゲーム制作講座】デカールで弾痕や落書きを表現できる | Youtube

AOEアクター(親): BP_AOE_Base

BP: ブループリント クラス
親クラス: Actor
名前: BP_AOE_Base
ノードを組む

【変数】
Radius – Float
Sphere Overlap AcorsSphere Radiusから変数へ昇格。回復や爆発の効果範囲になります。デフォルト値は100。
IgnoreInstigator – Boolean
└新規作成。目玉アイコンを開ける。スポーン時に公開にチェックを入れる。発動者を無視するかどうか。チェックを入れると無視します。回復なら無視しないし攻撃系なら無視したい。
【イベントディスパッチャー】OnAOEOverlapActor
└インプット: Actor – Actor

AOEアクター(子): BP_AOE_Blast_Base

名前: BP_AOE_Blast_Base
BP_AOE_Baseから子ブループリント クラスを作成します。
子だけど爆発系の親になるのでBaseでもある。
爆発や落雷など、瞬間的な爆発系の親です。

ノードを組む
イベント Triggerを配置した後、右クリックで「親関数への呼び出しを追加」しています。

【変数】BlastEffect – Particle System
Spawn Emitter AttachedEmitter Templateから変数へ昇格
【変数】BlastSound – Sound Base
Play Sound at LocationSoundから変数へ昇格

AOEアクター(子)(子): BP_AOE_Explosion

名前: BP_AOE_Explosion
BP_AOE_Blast_Baseから子ブループリント クラスを作成。
爆発系の子で爆発です。

マイブループリントの設定で「継承した変数を表示」にチェックを入れておく必要があります。

デフォルト値

Blast EffectとBlast Soundをセットする。
Blast Effect: P_Explosion
Blast Sound: Explosion_Cue

AOEアクター(子)(子): BP_AOE_LightningStrike

名前: BP_AOE_LightningStrike
BP_AOE_Blast_Baseから子ブループリント クラスを作成。
爆発系の子で落雷です。

デフォルト値

Blast EffectとBlast Soundをセットする。
Blast Effect: P_ky_lightning3
Blast Sound: Explosion_Cue

ノードを組む

【変数】
DelayBeforeStrike – Float
DelayDurationから変数へ昇格。目玉アイコンを開ける。スポーン時に公開にチェックを入れる。落雷前の印が出てから落雷までの時間。デフォルト値は2.0。
AttackTarget – Actor
└新規作成。目玉アイコンを開ける。スポーン時に公開にチェックを入れる。
RadiusはDecal Sizeと同じ256にしました。

プレイヤーBP: BP_Player

ノードを組む
・テスト用の入力イベントです。入力キーは好きなように割り当ててください。

・プレイヤーにヒットした時、プレイヤーが吹っ飛ぶようになっています。
ブランチを削除してApply Damage等にすれば対象にダメージを与えます。

AOEアクター(子): BP_AOE_OverTime_Base

名前: BP_AOE_OverTime_Base
BP_AOE_Baseから子ブループリント クラスを作成します。
回復や燃え続ける炎など、持続系の親になります。

ノードを組む

【変数】
SpawnInterval – Float
└新規作成。目玉アイコンを開ける。スポーン時に公開にチェックを入れる。デフォルト値は1.0。回復であれば1秒ごとに回復するという意味。
Duration – Float
└新規作成。目玉アイコンを開ける。スポーン時に公開にチェックを入れる。デフォルト値は5.0。出現してから5秒後に消滅するという意味。

AOEアクター(子)(子): BP_AOE_Fire

名前: BP_AOE_Fire
BP_AOE_OverTime_Baseから子ブループリント クラスを作成。
持続系の子で炎です。

ノードを組む

・Blast Effectの変数を使わずSpawn Emitter AttachedでP_Fireを指定しています。
・P_Fireの大きさに合わせるならRadiusは80が良いです。
・炎ですからSpawnIntervalは0.1、Durationは10.0。

AOEアクター(子)(子): BP_AOE_Heal

名前: BP_AOE_Heal
BP_AOE_OverTime_Baseから子ブループリント クラスを作成。
持続系の子で回復です。
ノードを組む

・Blast Effectの変数を使わずSpawn Emitter AttachedでP_ky_healAuraを指定しています。
Radiusは120にしています。

ダメージシステム&アタックシステムとの連動

動画の46分からダメージシステム&アタックシステムとの連動の一例を解説しています。
How to do AOE damage and healing | Unreal Engine 5 Tutorial | ue5

もしくはSmart Enemy AI Tutorial Series – Unreal Engine 5のPart 14でも、このAOEシステムを使用しています。
Smart Enemy AI | (Part 14: Mage Enemy Continued) | Tutorial in Unreal Engine 5 (UE5)

BPC_Attacks

アタックシステムへの導入例。

ノードを組む LightningStrike

・Get OwnerのターゲットはActor Component。
ノードを組む Heal

コメント

  1. […] Ali Elzoheiry氏のチュートリアルから学ぶ敵AIの第10回になります。過去記事で作成したものが必須になります。 敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応 敵AI 2:敵が間合いを取りながら攻撃してくる 敵AI 3:敵が逃げて隠れて再び攻撃してくる 敵AI 4:近距離タイプと遠距離タイプの敵を分ける 汎用性と拡張性の高いダメージシステム プロジェクタイル(Projectile)の基本 敵AI 5:敵の攻撃とブロック 敵AI 6:プレイヤーを見失った敵が捜索を始める 敵AI 7:NavLinkProxyで敵にジャンプさせる  敵AI 8:集団の敵の攻撃タイミングの管理 敵AI 9:AIが敵と味方を区別して戦うようになるチームバトル AOE(Area of Effect) […]

  2. […] 敵AI 9:AIが敵と味方を区別して戦うようになるチームバトル AOE(Area of Effect) 敵AI […]

  3. […] 敵AI 9:AIが敵と味方を区別して戦うようになるチームバトル AOE(Area of Effect) 敵AI 10:中ボスクラスの魔術師 敵AI […]

  4. […] 敵AI 9:AIが敵と味方を区別して戦うようになるチームバトル AOE(Area of Effect) 敵AI 10:中ボスクラスの魔術師 敵AI 11:敵のジャンプ攻撃 敵AI […]

タイトルとURLをコピーしました