Unreal Engine:敵キャラをパトロールポイントにAIで動かす

敵キャラをAIで動かすに当たって、アイドル状態からいきなり攻撃を仕掛けてくるのではなく、先ず、A地点とB地点にパトロールポイントを設定してそこを行き来させ、こちらの存在に気付いてから攻撃してくるようにします。今回は、このパトロール地点の設定をしたいと思います。

スポンサーリンク

C++でパトロールポイントを設定する

Enemy.hにPatrolPointとEnemyControllerを宣言します。

UPROPERTY(EditAnywhere, Category = AI, meta = (AllowPrivateAccess = "true", MakeEditWidget = "true"))
FVector PatrolPoint;

class AEnemyController* EnemyController;

Enemy.cppに幾つかヘッダーファイルを追加します。

#include "EnemyController.h"
#include "Kismet/KismetMathLibrary.h"
#include "BehaviorTree/BlackboardComponent.h"

Enemy.cppのBeginPlay関数にコードを追加します。

void AEnemy::BeginPlay()
{
	Super::BeginPlay();

	EnemyController = Cast<AEnemyController>(GetController());

	const FVector WorldPatrolPoint = UKismetMathLibrary::TransformLocation(
		GetActorTransform(),
		PatrolPoint);
	if(EnemyController)
	{
		EnemyController->GetBlackboardComponent()->SetValueAsVector(
			TEXT("PatrolPoint"),
			WorldPatrolPoint);
		EnemyController->RunBehaviorTree(BehaviorTree);
	}	
}

コンパイルしてUE4エディタを起動します。

スポンサーリンク

ブループリントで設定する

Enemy_BPのAI Controller ClassにEnemyController_BPを設定します。

EnemyBlackboardを開き、新規キーのVectorを選択します。

名前はPatrolPointにします。

EnemyBehaviorTreeを開き、ルート→Sequenceを選択します。

Sequence→TasksのMoveToを選択します。

MoveToノードのBlackboard KeyをPatrol Pointに設定します。

スポンサーリンク

ナビメッシュバウンズボリュームの設定

アクタを配置の検索窓にnavmと入力してナビメッシュバウンズボリュームを選択します。

ナビメッシュバウンズボリュームをエディタ内に引っ張り出します。

Rキーを押してナビメッシュバウンズボリュームをX、Y軸方向に拡大します。

Pキーを押すとナビメッシュバウンズボリュームが拡大したことを確認できます。

スポンサーリンク

エディタでパトロールポイントの設定

敵キャラに張り付いているパトロールポイントウイジェットを引っ張り出します。

適当な場所にパトロールポイントを配置します。

これでゲームが開始すると敵キャラはパトロールポイントに勝手に移動し始めます。

スポンサーリンク

コメント

タイトルとURLをコピーしました