概要
作成中のゲームの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というのを設定する必要があります