戦闘AIの作り方【Dynamic Combat Systemをリバースエンジニアリング】

1対1の戦闘システム作成の参考にするため、UE4マーケットプレイスで販売している「Dynamic Combat System」をリバースエンジニアリングする。

ブラックボード

ブラックボードには以下のキーを定義。

[behavior]キーには[E_AIBehavior]というEnumerationが割り当てられている。


ビヘイビアツリー

S_UpdateExampleAIBehavior

ビヘイビアツリーの最初に実行されるサービス。
[Behavior]と[Activities]の更新が行われる。

Behaviorの更新 [UpdateBehavior]

概要
・キャラクターのステートが「disabled」でないかチェックする
・ターゲットがセットされているか、生きているかを確認する
・ターゲットとの距離と内積を変数に保存する
・攻撃を受けた回数とスタミナを変数に保存する
・ターゲットの装備コンポーネントを変数に保存する
・自分がターゲットの背後にいるのかどうか(分岐)
・[自分がターゲットの背後なら]
  ・攻撃範囲内ならステートを[MeleeAttack]にセットする
  ・攻撃範囲外ならステートを[Approach]にセットする
・[自分がターゲットの背後でない]
  ・攻撃範囲内かどうか
    ・[攻撃範囲内]
      ・
  

まず[Behavior]のステートが[disabled]になっていないか確認する。
[disabled]だった場合は[Hit]ステートをセットする。

次にターゲットが設定されているか、生きているかを確認する。

そしてターゲットとの距離と内積を変数に保存する。

そして攻撃を受けた回数とスタミナを変数に保存する。