2017-01-06 2 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); 
} 

このコードは、最初のアクターをスポーンするために正常に動作し、既存のオブジェクトに対してチェックを行い、何かに衝突する可能性がある場所を生成しません。しかし、私はオブジェクトを2回目で生成しますが、この関数から生成されたオブジェクトは、衝突をチェックする際には考慮されません。DontSpawnIfCollidingはSpawnActor関数によってアクターのスポーンをチェックしません

私は間違っていますか?

+2

ここでは暗闇の中で撮影しましたが、衝突プリセットが同じクラスの俳優を無視するかどうかを確認しましたか? – Gamb

+0

それは問題thxだった。 – Frozendragon

+0

ああ、素晴らしい。私はこの質問を閉鎖し、問題のあるコーダーを助けるための答えとして追加します。 – Gamb

答えて

1

SpawnActorメソッドを使用すると、デフォルト戦略が有用でないことがあります。代わりにコリジョンプリセットと(安心して)コリジョンチャンネルを設定し、コリジョンレスポンスをチェックして、同じクラスの俳優を無視しないようにしてください。

関連する問題