AI Perception fails to detect sight when using blueprint nativize conversion when building game

Here is workaround in case AIPerception Component added to Blueprint.

declare function in C++ and call it in BeginPlay

header:

UFUNCTION(BlueprintCallable, Category = "Helper")
void UpdateDetectionByAffiliation();

cpp:

void AAIC_BaseCPP::UpdateDetectionByAffiliation()
{
	UAIPerceptionComponent *percComp = GetAIPerceptionComponent();
	if (!percComp)
		return;
	
	UAISenseConfig_Sight *sightConfig = Cast<UAISenseConfig_Sight>(percComp->GetSenseConfig(UAISense::GetSenseID(UAISense_Sight::StaticClass())));
	if (sightConfig)
	{
		sightConfig->DetectionByAffiliation.bDetectEnemies = true;
		sightConfig->DetectionByAffiliation.bDetectFriendlies = true;
		sightConfig->DetectionByAffiliation.bDetectNeutrals = true;
	}

	UAISenseConfig_Hearing *hearingConfig = Cast<UAISenseConfig_Hearing>(percComp->GetSenseConfig(UAISense::GetSenseID(UAISense_Hearing::StaticClass())));
	if (hearingConfig)
	{
		sightConfig->DetectionByAffiliation.bDetectEnemies = true;
		sightConfig->DetectionByAffiliation.bDetectFriendlies = true;
		sightConfig->DetectionByAffiliation.bDetectNeutrals = true;
	}

	percComp->RequestStimuliListenerUpdate();
}
1 Like