プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【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というのを設定する必要があります