DontSpawnIfColliding不会通过SpawnActor函数检查actor生成

时间:2017-01-06 18:50:47

标签: c++ unreal-engine4

 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并检查现有对象,因此它不会在可能与某些东西发生碰撞的地方产生。但是,第二次生成一个对象时,我注意到在检查碰撞时不考虑从该函数产生的对象。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

使用SpawnActor方法时,有时默认策略无效。相反,你应该设置碰撞预设和(寻找安心)一个碰撞通道,双重检查碰撞响应不是忽略来自同一班级的演员。