はじめに
現在制作しているゲームにAI(?)のような機能が必要になってきたので、UE4の機能として提供されているAIControllerについて調べてみたのでまとめ
AIControllerを使用するにあたって必要なもの
AIController
- 後述するBlackBoardとBehaviorTreeを関連付け、パラメータのセット等をおこなうクラス
-
Get/Set Value as (型)
ノードを使用してBlackBoardが保持する変数の値を取得・設定する-
BlackBoardComponent
が所有するノード -
Key Name
にBlackBoardが保持するKeyの文字列を指定する
-
BlackBoard
- AIの行動基準となるパラメータを保持するクラス
- Keyとして名前と型を持つ
BehaviorTree
- AIの行動ロジックを組むクラス
- 関連付けされたBlackBoardからパメータの参照等をおこなう
BTTTaskBluePrintBase派生のクラスたち(自作タスク)
- AIへの行動モジュールを自作したもの
- BlackBoardKeySelector型を経由して値を取得・設定する
-
Get/Set BlackboardValue as (型)
を使用- BehaviorTreeが所有するノード
-
躓きポイント
BehaviorTreeのMoveToタスクを使用する際には、対象のPawnをCharacterクラス派生にするかFloatingPawnMovement等のPawnMovementComponent派生のコンポーネントを付与している必要がある。
これをしなかったためにMoveToタスクが正しく挙動しなくて小一時間悩んだ