UE5 부트캠프(TIL)
[TIL]Intelligence팀 프로젝트 적 스폰, 아이템 스폰
Yellow Kirin
2025. 7. 30. 22:54
이번에는 언리얼 엔진에서 적 스포너와 아이템 스폰 시스템을 직접 구현했다.
핵심은 타이머를 활용한 반복적 액터 생성! GetWorldTimerManager().SetTimer()
함수의 존재감이 정말 컸다.
1. 타이머 기반 스포너 설계
처음엔 BeginPlay()
에서 한 번만 생성했지만, 원하는 건 일정 시간 간격으로 반복 생성이었다.
이를 위해 언리얼의 SetTimer
를 활용하면, 매 n초마다 원하는 함수를 반복 호출할 수 있다.
// BeginPlay()에서 타이머 등록
void ATItemSpawner::BeginPlay()
{
Super::BeginPlay();
GetWorldTimerManager().SetTimer(
SpawnTimerHandle, // FTimerHandle
this,
&ATItemSpawner::TrySpawnItem, // 콜백 함수
SpawnInterval, // n초 간격
true // 반복(true)
);
}
- 적 스포너도, 아이템 스포너도 이 구조를 그대로 사용 가능
- TrySpawnItem()에서는 현재 스폰된 객체가 없을 때만 새로 생성
2. SetTimer
로 제어하는 반복 로직
기존에는 직접 Tick()
에서 시간 카운트하거나, 복잡한 상태 체크가 필요했다.
하지만 SetTimer를 쓰면 불필요한 로직 없이 간결하게 주기적 작업을 처리할 수 있다.
if (!IsValid(SpawnedItem)) {
SpawnedItem = GetWorld()->SpawnActor(...);
// 필요시: SpawnedItem->OnDestroyed.AddDynamic(...) 바인딩
}
3. 느낀 점 & 활용 포인트
- 타이머는 반복적/주기적 이벤트 처리에 최적이다
- 언리얼에서
SetTimer
한 줄로 복잡한 타이밍 제어를 대체할 수 있음 - 게임의 웨이브 시스템, 보상 상자, 버프 리젠 등 다양한 곳에 적용 가능
- 생성/파괴 체크(Valid/IsValid)와 타이머의 조합이 깔끔하다