近距離タイプの敵が中距離からジャンプ攻撃をします。
Ali Elzoheiry氏のチュートリアルから学ぶ敵AIの第11回になります。過去記事で作成したものが必須になります。
敵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:中ボスクラスの魔術師
記事は自分でやり直す時のために簡単にまとめており、独自の仕様にもなっていますから、学習するなら参考元のAli Elzoheiry氏のSmart Enemy AI Tutorial Seriesの動画を視聴してください。
Smart Enemy AI | (Part 15: Long Range Melee Jump Attack) | Tutorial in Unreal Engine 5 (UE5) | Youtube
必要なもの
- 敵のジャンプ斬りのアニメーション
Sword And Shield Jump Attack | Mixamo
敵のABP: ABP_EnemyBase
BP_EnemyBaseが使用しているアニメーションブループリントを編集します。もしABP_Mannyを使っていればABP_Manny。
AnimGraph
・上半身と下半身でアニメーションをブレンドする設定。
・MainStates(Pose)は新規保存のキャッシュされたポーズ…で出るノードです。
・スロットは詳細からUpperBodyに変更できます。
・Velociyから繋がっているのは「!=」です。
・ボーン毎のレイヤードブレンドの詳細のBone Nameはspine_01。Blend Depthは1。Mesh Space Rotation Blendのチェックを入れる。
敵のジャンプ斬りのアニメーション
Force Root Lockにチェックを入れる。
AnimMontageを作成。
Start Timeを0.45にする。
地面から足が離れたタイミングでMontage Notifyを追加。名前はJump。
着地寸前の斬るタイミングでMontage Notifyを追加。名前はSlash。
スロットをDefaultSlotからUpperBodyに変更。
私の場合はANS_SwordTraceLoop_Enemyも配置しています。
敵のBP: BP_EnemyMelee
アニメーションブループリントをABP_EnemyMeleeにしていたかもしれませんが、ABP_EnemyBaseにします。
関数: Calculate Future Actor Location
新規作成。
プレイヤーの動きに合わせてジャンプ斬りの着地点を調整する計算です。
インプット
Actor – Actor
Time – Float ※デフォルト値1
アウトプット
Location – Vector
関数: Get Ideal Range
AttackRadiusを200、DefendRadiusを400。
※変数化している場合はデフォルト値に入力。
イベントグラフ
今まで攻撃をBP_EnamyBaseと共有していましたが、攻撃が複雑化するのでBP_EnamyMelee独自のものに変更します。
【ShortRangeAttack: インプット】AttackTarget – Actor
・親: Enemy Attackのノードは、イベント Enemy Attackを配置してから右クリックで「親関数への呼び出しを追加」で出せます。
列挙型: E_Melee_Attacks
名前: E_Melee_Attacks
新規作成
Default
ShortRangeAttack
LongRangeAttack
ブラックボード: BB_EnemyBase
新規キー
DistanceToAttackTarget – Float
タスク: BTTask_MeleeAttack
・作成済のタスクです。Enemy AttackとCast To BP_EnemyBaseを削除して編集。
【変数】AttackName – E_Melee_Attacks
新規作成。目玉アイコンを開ける。
サービス: BTS_UpdateDistanceToTarget
名前: BTS_UpdateDistanceToTarget
新規作成。
【変数】AttackTargetKey – Blackboard Key Selector
新規作成。目玉アイコンを開ける。
【変数】DistanceToTargetKey – Blackboard Key Selector
新規作成。目玉アイコンを開ける。
ビヘイビアツリー: BT_EnemyMelee
BT_EnemyMeleeを複製して名前をBT_EnemyMeleeAndJumpにしました。
■CombatReady(Selector)
・BTS_UpdateDistanceToTargetのAttack Target KeyをAttackTarget、Distance to Target KeyをDistanceToAttackTarget、Intervalを0.1、Random Deviationを0、Call Tick on Search Startにチェックを入れる。
■Attack(Sequence)
・Cooldownのオブザーバーを中止はNone。
・Blackboard Based Condition(左)のBlackboard KeyをDistanceToAttackTarget、Key QueryをIs Greater Than Or Equal To、Key Valueを400。
・LongRangeAttack(BTTask_MeleeAttack)のAttack Radius KeyをDefendRadius、Attack NameをLongRangeAttack。
・ShortRangeAttack(BTTask_MeleeAttack)のAttack NameをShortRangeAttack。
コメント