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并检查现有对象,因此它不会在可能与某些东西发生碰撞的地方产生。但是,第二次生成一个对象时,我注意到在检查碰撞时不考虑从该函数产生的对象。
我做错了什么?
答案 0 :(得分:1)
使用SpawnActor
方法时,有时默认策略无效。相反,你应该设置碰撞预设和(寻找安心)一个碰撞通道,双重检查碰撞响应不是忽略来自同一班级的演员。