攻撃システムが変更されます。プレイヤーや各エネミーで攻撃が共有しやすくなります。
Ali Elzoheiry氏のチュートリアルから学ぶ敵AIの第14回になります。過去記事で作成したものが必須になります。
敵AI:敵がルートを巡回しプレイヤーや音に気付くと反応
敵AI 2:敵が間合いを取りながら攻撃してくる
敵AI 3:敵が逃げて隠れて再び攻撃してくる
敵AI 4:近距離タイプと遠距離タイプの敵を分ける
汎用性と拡張性の高いダメージシステム
プロジェクタイル(Projectile)の基本
敵AI 5:敵の攻撃とブロック
敵AI 6:プレイヤーを見失った敵が捜索を始める
敵AI 7:NavLinkProxyで敵にジャンプさせる
敵AI 8:集団の敵の攻撃タイミングの管理
敵AI 9:AIが敵と味方を区別して戦うようになるチームバトル
AOE(Area of Effect)
敵AI 10:中ボスクラスの魔術師
敵AI 11:敵のジャンプ攻撃
敵AI 12:敵の回転斬り
敵AI 13:魔術師の弾幕魔法
記事は自分でやり直す時のために簡単にまとめており、独自の仕様にもなっていますから、学習するなら参考元のAli Elzoheiry氏のSmart Enemy AI Tutorial Seriesの動画を視聴してください。
Smart Enemy AI | (Part 18: New Attack System) | Tutorial in Unreal Engine 5 (UE5)
必要なもの
- グラウンドスマッシュ(魔法)のアニメーション
Two Handed Casting Spell Towards Ground | Mixamo - グラウンドスマッシュ(剣)のアニメーション
Great Sword Spell Casting | Mixamo
AnimMontage: Montage_Mage_GroundSmash
・グラウンドスマッシュ(魔法)のアニメーションからAnimMontageを作成。
P_Gideon_EmoteFX_HandsをセットしてSocket Nameをhand_rにする。
0*(0.03)(1.12%)あたりにPlay Particle Effectを配置。左手用です。
P_Gideon_EmoteFX_HandsをセットしてSocket Nameをhand_lにする。
Proto_P_Gideon_MeteorImpactをセットする。
AnimMontage: Montage_Melee_GroundSmash
名前: Montage_Melee_GroundSmash
・グラウンドスマッシュ(剣)のアニメーションからAnimMontageを作成。
アセットブラウザからグラウンドスマッシュ(剣)のアニメーションを2つ追加して計3つにする。
1つめ
Start Time: 1.5
End Time: 2.0
Rate: 0.5
2つめ
Start Time: 2.0
End Time: 2.5
Play Rate: 2.0
3つめ
Start Time: 2.5
36*(1.23)(34.63%)あたりにMontage Notifyを配置。Notify NameはSmash。
36*(1.23)(34.63%)あたりにPlay Particle Effectを配置。
P_ky_lightning3をセット。位置Yを170にする。
必要に応じてPlay Soundも配置してください。
構造体: S_AttackInfo
名前: S_AttackInfo
・新規作成。
Montage – AnimMontage
DamageInfo – S_DamageInfo
列挙型: E_Mage_Attacks
エニュメレーター
Default
BasicAttack
BarrageAttack
GroundSmashAttack
列挙型: E_Melee_Attacks
エニュメレーター
Default
ShortRangeAttackAttack
LongRangeAttack
SpinningAttack
GroundSmashAttack
BPインターフェース: BPI_Damagable
関数: SetIsInterruptible
新規作成。
【インプット】
Value – Boolean
敵キャラクターBP: BP_EnemyBase
プレイヤーキャラクターBP: BP_Player
アクターコンポーネント: BPC_Attacks
関数: AttackBase
関数: Calculate Future Actor Location
BP_EnemyMeleeで使用している関数をコピー&ペーストするだけです

【インプット】Calculate Future Actor Location
Actor – Actor
Time – Float
【アウトプット】リターンノード
Location – Vector
イベントグラフ
BP_EnemyMeleeのカスタムイベント AOE Slashをコピー&ペーストして編集します。

【インプット】AOEDamage
Radius – Float
└セット RadiusのRadiusから線を伸ばす。
Damage Info – S_DamageInfo
└Take DamageのDamage Infoから線を伸ばす。
BP_EnemyMeleeのカスタムイベント ShortRangeAttackをコピー&ペーストして編集します。

【インプット】PrimaryMeleeAttack
AttackInfo – S_AttackInfo
・Attack EndがターゲットはBPI_EnemyAIに置き換わっています。
BP_EnemyMeleeのカスタムイベント LongRangeAttackをコピー&ペーストして編集します。

【インプット】LongRangeMeleeAttack
AttackInfo – S_AttackInfo
BP_EnemyMeleeのカスタムイベント SpinningAttackをコピー&ペーストして編集します。

【インプット】SpinningMeleeAttack
AttackInfo – S_AttackInfo
BP_EnemyMageのイベント EnamyAttack(もしくはカスタムイベント BasicAttack)をコピー&ペーストして編集します。

【インプット】BasicMagicSpell
AttackInfo – S_AttackInfo
BP_EnemyMageのカスタムイベント BarrageAttackをコピー&ペーストして編集します。

【インプット】BarrageMagicSpell
AttackInfo – S_AttackInfo
敵キャラクターBP: BP_EnemyMage
イベント Enemy Attackを削除。

【インプット】GroundSmashAttack
AttackTarget – Actor
【インプット】BasicAttack
AttackTarget – Actor
【インプット】BarrageAttack
AttackTarget – Actor
敵キャラクターBP: BP_EnemyMelee
イベント Enemy Attackを削除。
カスタムイベント JumpToAttackTarget、SpinMesh、StopSpinning、ChaseAttackTarget、AOESlashを削除。
関数のCalculate Future Actor Locationを削除
SpinningAttackはキャラクター回転させるノードが削除されました。Ali Elzoheiry氏はBlenderで回転させるアニメーションを作成したとのこと。

【インプット】SpinningAttack
AttackTarget – Actor
***
*Short Range Attack
*Long Range Attack
*Spinning Attack
タスク: BTTask_MageAttack
ShouldTeleport – Boolean
└デフォルト値はTrue。
タスク: BTTask_MeleeAttack
ビヘイビアツリー: BT_EnemyMage
ビヘイビアツリー: BT_EnemyMeleeAndJump
・複製して名前変更していなければBT_EnemyMelee。
















コメント