【UE5】AIに関するTips・知見・振り返り
概要
作成中のゲームのAIを部分的に抜粋してTipsのようなものをまとめたものです
作成中、ということもあってそれなりに端折ってたりします
思い出しながら書いてるので順序不同です
必要最低限のもの


最低限、ビヘイビアツリーとブラックボード、AIコントローラーが必要です
必要最低限のこと
AIとして動かすアクター

作成したAIコントローラーをアクターのAI Controller Classというところに設定をします
ビヘイビアツリーにブラックボードを設定

ビヘイビアツリーのほうでブラックボードを設定します
プレイヤーを追う例
ブラックボードのキー

ブラックボードにキーを追加することができます
これを利用して色々制御を入れたりします
今回、PlayerActorというObjectのキーを用意しておきます
ビヘイビアツリーで制御

Blackboard Based Conditionというのを用い、PlayerActorに中身があるかどうかで制御させます
PlayerActorが空でなければ、下へ処理が続きます
AIコントローラーでPlayerActorに値を入れる

AIコントローラーでBlackboardが取れるので、KeyNameにPlayerActorを入れつつ、Object Valueに中身を入れます

上記のように何も指定しなければ、中身が空扱いとなり、先ほどのBlackboard Based Condition以下は処理がされなくなります
ビヘイビアツリーのTips
Move To

Objectキーの値を入れられます
指定されたアクターのそばまで向かいます
Selector

つなげたノードの左から順番に処理がされるようにあんります
Default Focus(Set default focus)

設定したObjectキーの対象を注視するようになります

右クリックしてサービスを追加にあります
Simple Parallel

左に接続したノードをメインとして、右に接続したノードをサブとして行います
左に接続したノードが終了するまで右に接続したノードが行われ続けるみたいな感じです
例えば、左に接続したノードがターゲットに近づくという命令だった場合、ターゲットに近づいて終わるまで右に接続したノードも行われ続けるようになります
左に接続したノードが即終わるようなものだった場合、右に接続したノードもすぐ終わります
Wait

指定した秒だけビヘイビアツリー全部の処理が止まります
自作タスク

BTTaskNodeまたはBTTask_BlueprintBaseというのを利用して作成します、自分は後者です

Receive Execute AIかReceive Tick AIとかを用いてこんな感じでいじります

インスタンス編集可能にして変数を追加すれば、ビヘイビアツリーで指定ができます

自作したものをビヘイビアツリーで呼べます
自作デコレーター

BTDecoratorまたはBTDecorator_BlueprintBaseというものを利用して作成します、自分は後者です

Perform Condition Check AIという関数から、boolの返り値で返します

自作したものをビヘイビアツリーで呼びます
返り値がtrueだったら下の処理が走り、falseだったら下の処理は呼ばれません
AIコントローラーのTips
変数
変数の作成

作成自体は普通のアクターと同じように作成できます
変数の値を外からいじる

AIを設定したアクター内のほうでAIコントローラーが呼べるので、特定の条件になったら値を変えるということができます
AIキャラクターに検知させるアクター

AIPerceptionStimuliSourceというのを設定する必要があります