반응형
[Unreal/C++] Spawn Actor시 Owner을 설정합시다.
언리얼에서 무기를 Spawn 시키고 충돌 처리를 하던 중 Fatal Error를 만났다.
무기에 BoxCollision을 붙이고 PrimitiveComponent에서 받아온 OnComponentBeginOverlap 이벤트를 성공적으로 설정하였다.
void Actor::OnComponentBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
UGameplayStatics에 있는 ApplyDamage를 이용해 데미지를 전달하는 것 까지는 문제가 없었지만,
데미지를 받는 쪽에서 공격한 대상을 찾던 도중 문제가 발생했다.
UGameplayStatics::ApplyDamage(OtherActor, 5, GetOwner()-GetInstigatorController(), this, DamageType::StaticClass());
Spawn한 무기의 소유주가 nullptr이었던 것이다.
Controller->GetPawn() 을 이용해 적을 추적하려 했지만 nullptr을 만나 엔진 에디터가 꺼졌다.
소유주가 없으니 Enemy쪽에서 Spawn 후 SetOwner로 설정해 주었다.
기능은 정상적으로 작동하게 되었지만 아직 간과한 문제가 있다.
Spawn이 완료되고 Owner이 설정되기 전에 충돌이 일어날 수 있는 것이었다.
이제 남은 작업은 SpawnActor에서 SpawnActorDeferred로 바꾸는 것이다.
Deferred는 생성 전 모든 변경사항을 적용할 수 있다.
반응형
'Unreal > Solution' 카테고리의 다른 글
Unreal SpawnActorDeferred시 Particle이 재생되지 않음 (0) | 2024.01.12 |
---|---|
Unreal Particle이 RootComponent에 붙지 않고 따로 움직임 (0) | 2024.01.12 |
Unreal Launch Character 동작 하지 않는 이유 (0) | 2024.01.02 |
Unreal Did you leave off a prefix? (1) | 2023.12.29 |
Unreal Editor Preview에서 Notify 실행 중지 방법 (0) | 2023.12.28 |