敵AI 12:敵の回転斬り

近距離タイプの敵が強力な回転斬りを使えるようになります。

Ali Elzoheiry氏のチュートリアルから学ぶ敵AIの第12回になります。過去記事で作成したものが必須になります。
敵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:敵のジャンプ攻撃

記事は自分でやり直す時のために簡単にまとめており、独自の仕様にもなっていますから、学習するなら参考元のAli Elzoheiry氏のSmart Enemy AI Tutorial Seriesの動画を視聴してください。
Smart Enemy AI | (Part 16: Spinning Melee Attack) | Tutorial in Unreal Engine 5 (UE5) | Youtube

必要なもの

回転斬りのアニメーション

Force Root Lockにチェックを入れる。
移動させたいのでEnableRootMotionにチェックはいれない。
AnimMontageを作成する。名前はTornadoSlash_Montageにしました。

AnimMontageにアセットブラウザから回転斬りのアニメーションを2つ追加し、合計3つにする。

1つめのアニメーションシーケンスの
End Timeを0.42
Play Rateを0.5

2つめのアニメーションシーケンスの
Start Timeを0.42
End Timeを0.85

3つめのアニメーションシーケンス
Start Timeを0.85
End Timeを0.86
Play Rateを0.0025

37*(1.25)(23.65%)くらいのところにMontage Notifyを追加。名前はSpin。

42*(1.41)(26.7%)くらいのところにPlay Particle Effectを追加。P_Spinner_Lar_2をセット。
Location OffsetのZを75.0
Scaleを全て2.0

Play Particle Effectをコピー→貼り付けして、98*(3.27)(62.02%)くらいに配置する。

45*(1.50)(28.53%)くらいのところにMontage Notifyを追加。名前はAOESlash
そこから0.5秒間隔でAOESlashを配置する。
右クリックで通知開始時間を入力できますから、1.5、2.0、2.5、3.0、3.5、4.0、4.5と計7つ配置。7回ダメージが当たります。

列挙型: E_Melee_Attacks

作成済。4つめのエニュミレーターを追加します。

エニュミレーター
Default
ShortRangeAttack
LongRangeAttack
SpinningAttack

敵BP: BP_EnemyRanged

BP_EnemyRangedも攻撃ノードを独自のものにします。BP_EnemyBaseからEnemyRangedに関係する攻撃関連のノードをコピペして編集。

ノードを編集

イベント Enemy Attackで右クリックして親関数への呼び出しを追加しています。
※BP_EnemyMeleeやBP_EnemyMageにも攻撃ノードの最初に親: Enemy Attackを追加する必要があります。

敵BP: BP_EnemyBase

もうBaseの攻撃関連ノードは使わないので削除します。
攻撃中かどうかを確認する変数のIsAttacking?のみ共有。

ノードを編集

【変数】
IsAttacking? – Boolean
└新規作成。

敵BP: BP_EnemyMelee

イベントグラフ
ノードを組む SpinningMesh & StopSpinning

【変数】
MeshRotationBeforeSpin – Rotator
Get Relative Rotationから変数へ昇格
SpinMeshTimeLineの4秒という長さはメッシュをグルグル回転させる時間の長さです。
フロートトラックを追加し、点を2つ配置。0秒に値0、4秒に値1。トラックの名前はZRotationAlpha。
ノードを組む ChaseAttackTarget
・回転斬り中にプレイヤーを追いかけるノードです。

【ChaseAttackTarget: インプット】AttackTarget – Actor
ノードを組む AOESlash

【AOESlash: インプット】AttackTarget – Actor
セット RadiusはReturn Valueから線を伸ばして出せます。
ノードを組む SpinningAttack

【SpinningAttack: インプット】AttackTarget – Actor
コンストラクションスクリプト
ノードを編集

タスク: BTTask_MeleeAttack

ノードを編集
・SpinningAttackを追加するだけです。

ビヘイビアツリー: BT_EnemyMelee

ビヘイビアツリーを編集

・追加したBTTask_MeleeAttackのAttack Target KeyはAttackTarget、Attack Radius KeyはDefend Radius、Tokens Neededは1、Attack NameはSpinningAttack。Node NameはSpinningAttackにしておきます。
・強力な攻撃なので20秒のCooldownをつけています。

コメント

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