1対1の戦闘システム作成の参考にするため、UE4マーケットプレイスで販売している「Dynamic Combat System」をリバースエンジニアリングする。
ブラックボード
ブラックボードには以下のキーを定義。
[behavior]キーには[E_AIBehavior]というEnumerationが割り当てられている。
ビヘイビアツリー
S_UpdateExampleAIBehavior
ビヘイビアツリーの最初に実行されるサービス。
[Behavior]と[Activities]の更新が行われる。
Behaviorの更新 [UpdateBehavior]
概要
・キャラクターのステートが「disabled」でないかチェックする
・ターゲットがセットされているか、生きているかを確認する
・ターゲットとの距離と内積を変数に保存する
・攻撃を受けた回数とスタミナを変数に保存する
・ターゲットの装備コンポーネントを変数に保存する
・自分がターゲットの背後にいるのかどうか(分岐)
・[自分がターゲットの背後なら]
・攻撃範囲内ならステートを[MeleeAttack]にセットする
・攻撃範囲外ならステートを[Approach]にセットする
・[自分がターゲットの背後でない]
・攻撃範囲内かどうか
・[攻撃範囲内]
・
まず[Behavior]のステートが[disabled]になっていないか確認する。
[disabled]だった場合は[Hit]ステートをセットする。
次にターゲットが設定されているか、生きているかを確認する。
そしてターゲットとの距離と内積を変数に保存する。
そして攻撃を受けた回数とスタミナを変数に保存する。