Hi, I want to apply a radial damage but not including all AI characters, so I do this before apply radius damage:
bool UArStatics::ApplyRadiusDamage(const UObject* WorldContextObject, float BaseDamage, const FVector& Origin, float DamageRadius, TSubclassOf<UDamageType> DamageTypeClass, TArray<AActor*>& IgnoreActors, AActor* DamageCauser, AController* InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, bool bIgnoreAI /*= false*/)
{
if (bIgnoreAI) {
TArray<FOverlapResult> OverlapResults;
WorldContextObject->GetWorld()->OverlapMultiByChannel(OverlapResults, Origin, FQuat::Identity, DamagePreventionChannel, FCollisionShape::MakeSphere(DamageRadius));
for (FOverlapResult OverlapResult : OverlapResults) {
AActor* OneActor = OverlapResult.GetActor();
if (OneActor && OneActor->GetClass()->IsChildOf(AArAICharacter::StaticClass())) {
IgnoreActors.AddUnique(OneActor);
}
}
}
return UGameplayStatics::ApplyRadialDamage(WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel);
}
In debug view, IgnoreActors List contains all AI characters I want to ignore, but my ai characters still be damaged anyway, if anyone knows why, please help me, thanks so much!