언리얼 - Timer

안영욱·2024년 11월 10일
0

언리얼

목록 보기
7/8

언리얼 프로젝트를 진행하고 공부하면서 기억하면 좋을만한 내용들을 메모하였습니다.


Timer란?

Timer일정시간 동안 혹은 일정시간 이후 작업을 지속시킬수 있습니다
예) 아이템을 먹고 일정시간동안 무적, 불속에서 지속시간동안 데미지

저는 FlyingTime을 측정하여 공중에있던 시간만큼 착지 딜레이를 주기위해 Timer를 사용하였습니다.


기본적으로 필요한 속성

// .h

void SetFlyingTime(); // Flying시간을 Deltatime만큼 더해줄 함수
void StarFlyingTimer(); // 채공에 돌입할경우 Timer를 실행시켜줄 함수
void StopFlyingTimer(); // 채공이 끝날경우 Timer를 초기화 시켜줄 함수
FTimerHandle FlyingTimerHandle; // TimerHandler로 델리게이트와 구분되는 고유핸들

// .cpp

void UTPS_CharacterMovementComponent::SetFlyingTime()
{
	// DeltaTime만큼 Flying시간 측정
	FlyingTime += GetWorld()->DeltaTimeSeconds;
}

void UTPS_CharacterMovementComponent::StarFlyingTimer()
{
	FlyingTime = 0.0f;
	// FlyingTimerHandler에 SetFlyingTime을 등록하고 , DeltaTimeSeconds마다 반복하여 호출시킴
	GetWorld()->GetTimerManager().SetTimer(FlyingTimerHandle, this, &UTPS_CharacterMovementComponent::SetFlyingTime,
	                                       GetWorld()->DeltaTimeSeconds, true);
}

void UTPS_CharacterMovementComponent::StopFlyingTimer()
{
	// 측정이 끝났나면 Handler를 초기화
	GetWorld()->GetTimerManager().ClearTimer(FlyingTimerHandle);
}

Tick에서 매프레임마다 지속적으로 상태를 체크하는것보다 Timer로 원하는 구간에만 사용하는것이 효율적일것입니다.

profile
개발자좀 한번해보자

0개의 댓글