[UE] SpawnActor 시점에 에러 발생
SpawnActor 시점에 에러 발생
문제 상황
SpawnActor로 총알을 스폰 시키는 시점에 에러가 발생하며 터졌다.


원인
스폰을 시키는 해당 클래스는 UObject 상속의 클래스 AActor 상속 클래스와 달리 실체가 없다.
그래서 GetWord()를 부를 때 문제가 된다.
해결방안
스폰 시키는 주체가 캐릭터가 되게 하면 문제를 해결할 수 있다.
변경 전
SpawnedProjectile = GetWorld()->SpawnActor<AXZProjectile>(ActionDatas[Idx].ProjectileClass, SocketTransform.GetLocation(), TargetRotation, SpawnParams);
변경 후
SpawnedProjectile = OwnerCharacter->GetWorld()->SpawnActor<AXZProjectile>(ActionDatas[Idx].ProjectileClass, SocketTransform.GetLocation(), TargetRotation, SpawnParams);
OwnerCharacter가 주체가 되어 액터를 스폰한다.
void UXZCombat::OnFireBullet() { // 무기 Nozzle에서 총알 발사 if (IsValid(XZAttachment) && IsValid(XZAttachment->GetWeaponMesh())) { const USkeletalMeshSocket* MuzzleFlashSocket = XZAttachment->GetWeaponMesh()->GetSocketByName(ActionDatas[Idx].MuzzleSocketName); if (MuzzleFlashSocket) { FTransform SocketTransform = MuzzleFlashSocket->GetSocketTransform(XZAttachment->GetWeaponMesh()); FRotator TargetRotation = (HitTargetLocation - SocketTransform.GetLocation()).Rotation(); if (IsValid(OwnerCharacter) && IsValid(OwnerCharacter->GetWorld()) && IsValid(ActionDatas[Idx].ProjectileClass)) { UE_LOG(LogTemp, Warning, TEXT("Spawning projectile at location: %s with rotation: %s"), *SocketTransform.GetLocation().ToString(), *TargetRotation.ToString()); FActorSpawnParameters SpawnParams; SpawnParams.Owner = XZAttachment->GetOwner(); SpawnParams.Instigator = Cast<APawn>(XZAttachment->GetOwner()); SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; SpawnedProjectile = OwnerCharacter->GetWorld()->SpawnActor<AXZProjectile>(ActionDatas[Idx].ProjectileClass, SocketTransform.GetLocation(), TargetRotation, SpawnParams); if (SpawnedProjectile) { SpawnedProjectile->SetActorEnableCollision(false); UE_LOG(LogTemp, Warning, TEXT("Projectile spawned successfully")); } } } } }
'⭐ Unreal Engine > UE Debugging Log' 카테고리의 다른 글
[UE] GameplayTag를 날리면서 발생한 문제, OnRep 함수 안 불림, 컴포넌트 클래스 Replicate (0) | 2024.07.31 |
---|---|
[UE] 입력 BindAction 템플릿 함수에서 발생한 문제 (0) | 2024.07.27 |
[UE] 몽타주 생성 시 A-pose 하는 문제 (0) | 2024.07.26 |
[UE] Gameplay Tag: TagName=Illegal name (block index out of range) (1) | 2024.07.24 |
[UE] 포트포워딩 시 주의사항 (0) | 2024.06.26 |
댓글
이 글 공유하기
다른 글
-
[UE] GameplayTag를 날리면서 발생한 문제, OnRep 함수 안 불림, 컴포넌트 클래스 Replicate
[UE] GameplayTag를 날리면서 발생한 문제, OnRep 함수 안 불림, 컴포넌트 클래스 Replicate
2024.07.31 -
[UE] 입력 BindAction 템플릿 함수에서 발생한 문제
[UE] 입력 BindAction 템플릿 함수에서 발생한 문제
2024.07.27 -
[UE] 몽타주 생성 시 A-pose 하는 문제
[UE] 몽타주 생성 시 A-pose 하는 문제
2024.07.26 -
[UE] Gameplay Tag: TagName=Illegal name (block index out of range)
[UE] Gameplay Tag: TagName=Illegal name (block index out of range)
2024.07.24
댓글을 사용할 수 없습니다.