[C++] 타이머 활용

Woogle·2022년 11월 10일
0

언리얼 엔진 5

목록 보기
22/63
  • C++에서 타이머를 활용하여 Enemy가 시간 간격을 두고 EnemyBullet을 생성하게 만든다.

✏️ Blueprint

✏️ C++

헤더

public:
	UPROPERTY(EditAnywhere)
	float minMakeTime = 0.5f;	// 최소 생성 시간

	UPROPERTY(EditAnywhere)
	float maxMakeTime = 1.0f;	// 최대 생성 시간

	UPROPERTY(EditAnywhere)
	TSubclassOf<class AEnemyBullet>enemyBulletFactory;

	FTimerHandle timerHandleMakeBullet;	// 타이머를 만들기 위한 핸들

	void MakeEnemyBullet();	// 타이머에 바인딩할 함수

소스

void AEnemy::BeginPlay()
{
	Super::BeginPlay();

	// 타이머 만들고 함수 바인딩
	GetWorldTimerManager().SetTimer(timerHandleMakeBullet, this, &AEnemy::MakeEnemyBullet, FMath::FRandRange(minMakeTime, maxMakeTime), false);
}

void AEnemy::MakeEnemyBullet()
{
	FVector loc = GetActorLocation() + GetActorForwardVector() * 100;	// 생성 위치
	FRotator rot = GetActorRotation();									// 생성 각도
	GetWorld()->SpawnActor<ABullet>(enemyBulletFactory, loc, rot);		// 생성하기
 
	// 재귀 호출
	GetWorldTimerManager().SetTimer(timerHandleMakeBullet, this, &AEnemy::MakeEnemyBullet, FMath::FRandRange(minMakeTime, maxMakeTime), false);
}
profile
노력하는 게임 개발자

0개의 댓글