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시키면 된다.