2017-01-06 8 views
0
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); 
} 

此代碼工作正常產卵的第一男主角,並檢查對現有的對象,因此不會產卵的地方可以與某物相撞檢查演員產卵。但是,當我第二次產生一個對象時,我注意到在檢查碰撞時沒有考慮到從這個函數產生的對象。DontSpawnIfColliding不被SpawnActor功能

我在做什麼錯了?

+2

在這裏拍攝黑暗中的照片,但是您是否檢查碰撞預設是否忽略來自同一類的演員? – Gamb

+0

這是thx的問題。 – Frozendragon

+0

哦,太好了。我將其添加爲解決此問題的答案,並幫助進一步的編碼人員解決問題。 – Gamb

回答

1

當使用SpawnActor方法時,有時默認策略是沒有用的。相反,你應該設置一個碰撞預設和(尋求安心)碰撞頻道,雙重檢查碰撞響應不忽略來自同一類的演員。