[언리얼] AAIController 런타임에 변경하기

jh Seo·2024년 10월 28일

언리얼

목록 보기
5/18

개요

AI가 possess한 AIController의 값들을 런타임에 수정하다가
아예 통째로 바꾸기가 되나 궁금해서 알아봤다.

	AController* curController = GetController();

	AIControllerClass = EnemyData->AIControllerClass;
	if ( curController )
	{
		curController->UnPossess();
		curController->Destroy();
	}
	if (AIControllerClass )
	{
		AAIController* NewController = GetWorld()->
			SpawnActor<AAIController>
			(
				 AIControllerClass , GetActorLocation() , GetActorRotation()
			);
		if ( NewController )
		{
			ABasicEnemyAIController* NewBasicController = Cast<ABasicEnemyAIController>(NewController);
			NewBasicController->SetChaseImmediately(EnemyData->bChaseImmediately);
			NewController->Possess(this);
		}
	}

enemyData 데이터 에셋의 AIControllerClass로 중간에 변경해봤다.
현재 Controller을 GetController에서 받아와 UnPossess및Destroy를 해준다.
새로 AAIController actor을 spawn해준 후, possess시키면 된다.

profile
코딩 창고!

0개의 댓글