参考動画
【UE5初心者講座】#4 AIがプレイヤーを発見したらAIにプレイヤーを追いかけさせる - YouTube
【UE5初心者講座】#5 AIに攻撃させ、プレイヤーを発見したらロゴの色を変える (前回の修正もあります) - YouTube
AIデバッガー
AIBPControllerをひらく
コンポーネントの追加ボタンでAIPerception
詳細→AIPerception→SensesConfig→+→AISightconfig
→△マーク→視認距離が設定できる
Detection By Aff...に3つチェック入れる
プロジェクト設定→engin→GameplayDebugger
Activationキーを適当に他割り当て
AIPerceptionはテンキー5を押す
ルーチン改造
AIPerceptionを選択し詳細→OnTargetPerceptionUpdatedを追加
Actorから引っ張り==を追加
SelectAssetから引っ張りGetPlayerCharacterを追加
Branchを追加し==のConditionとつなぐ
OnTargetPerceptionUpdatedとBranchをつなぐ
Trueから引っ張りSetValueasObjectを追加
Targetから引っ張りGetBrackBoardを追加
KeyNameから引っ張りMakeLiteralNameを追加
ValueをTargetActor
ObjctValueとOnTargetPerceptionUpdatedのActorをつなぐ
SetValueasObject、GetBrackBoard、MakeLiteralNameをこぴぺしFalseとSetValueasObjectをつなぐ
MakeLiteralNameのValueをNoneにする
OnTargetPerceptionUpdatedのStimulusから引っ張り変数カテゴリのAIStimulusを分解(BleakAIStimulus)を追加
下を開いてSuccessfullySensedから引っ張りBranchを追加
前のBranchのTrueからつなぐ
追加したBranchから2つのSetValueasObjectにつなぐ
※SuccessfullySensedがTrueのときに視認されて
ブラックボードを開く
TargetActorのkey type→BaseClassをActorにする
ビヘイビアツリーでルート、セレクターから分岐
シーケンスのデコレーターを追加→BlackboardBasedConditionを選択、詳細のBlackboardKeyをTargetActorにする
FlowControlのObserverAbortsをBothにする
※Bothにすることにより、TargetActorが更新されると、即座に行動に反映される
名前をFindTargetにする
MoveToを追加しBlackboardKeyをTargetActor
Waitを追加
マテリアル設定
元の色を保存
CastToエネミー GetControlledPawn
CastToエネミーのAsBPからGetMesh
GetMeshからGetMaterial
ReturnValueからCreateDynamicMaterialInstance(Primitive)のほう
TargetはGetMeshに
SourceMaterialはGetMaterialに
ReturnValueから変数MaterialInstanceに昇格して格納
MaterialInstanceからGetVectorParameterValue
ParamaterNameをマテリアル画面の項目名(BodyColor)にする
ReturnValueから変数xxxxに昇格して格納
色を変える
GetMaterialInstanceからSetVectorParameterValue
ParamaterNameをマテリアル画面の項目名(BodyColor)にする
Valueをクリックし色を指定