DontSpawnIfColliding 不检查 SpawnActor 函数生成的 actor

DontSpawnIfColliding doesn't check actor spawn by the SpawnActor function

 void USpawner::Spawn(TSubclassOf<AMyActor> myactor)
 {
     UWorld* World = GEngine->GameViewport->GetWorld();
     ACharacter* myCharacter = UGameplayStatics::GetPlayerCharacter(World, 0);
     FVector loc = myCharacter->GetActorLocation();
     FActorSpawnParameters ActorSpawnParameters;
     ActorSpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::DontSpawnIfColliding;

     AMyActor* NewActor = World->SpawnActor<AMyActor>(myactor, loc, FRotator::ZeroRotator, ActorSpawnParameters);
 }

此代码可以很好地生成第一个 actor 并检查现有对象,因此它不会在可能与某些东西发生碰撞的地方生成。然而,我第二次生成一个对象时,我注意到在检查碰撞时没有考虑从此函数生成的对象。

我做错了什么?

当使用SpawnActor方法时,有时默认的策略是没有用的。相反,您应该同时设置 Collision Preset 和(为了安心)Collision Channel,仔细检查 Collision Response 不会忽略来自同一 class.

的演员