< [UE5 C++] 언리얼엔진 Timeline C++ 에서 구현하기

언리얼엔진5/각종 지식

[UE5 C++] 언리얼엔진 Timeline C++ 에서 구현하기

Rocketbabydolls 2024. 6. 19. 04:59

헤더

// TimeLine Section

FOnTimelineFloat ADSCallback;
FOnTimelineEvent ADSTimelineFinish;

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Timeline)
TObjectPtr<class UTimelineComponent> ADSTimeline;

UPROPERTY(EditAnywhere,BlueprintReadOnly,Category = Timeline)
TObjectPtr<class UCurveFloat> ADSCurve;

    

    헤더에서 선언해야 할 것 네가지

  1. TimelineComponet
  2. CurveFloat
  3. FOnTimelineEvent Delegate
  4. FOnTimelineFloat Delegate

1번 타임라인 컴포넌트는 타임라인을 재생하는 컴포넌트 이다.

2번 CurveFloat는 타임라인을 재생할 동안 따를 커브 오브젝트이다.

3번 델리게이트는 매개변수가 필요하지 않은 이벤트를 실행시킬 때 사용하는 델리게이트이다. 

4번 델리게이트는 float 값이 변하는 타임라인에 사용하는 델리게이트 이다. 보통 AddInterpFloat 함수와 같이 쓰인다.

 

 

 

Curve

 

 

 

생성자

	ADSTimeline = CreateDefaultSubobject<UTimelineComponent>(TEXT("ADSTimeline"));
	ADSCallback.BindUFunction(this, FName("ADSTimeLineFunc"));
	//ADSTimelineFinish.BindUFunction(this, FName("EndADS")); // 원할 시 구현

 

구현부

 

	ADSTimeline->AddInterpFloat(ADSCurve, ADSCallback);
	ADSTimeline->SetTimelineLength(0.15f);
	ADSTimeline->SetLooping(false);
	//ADSTimeline->SetTimelineFinishedFunc(ADSTimelineFinish);  //원할 시 구현

 

 

나는 토글 형식으로 타임라인을 실행시켜 주었다.

 

void AVICharacter::StartADS()
{
	if (!bADS)
	{
		D("StartADS")
			bADS = true;
		ADSTimeline->Play();

	}
	else
	{
		D("EndADS")
			bADS = false;
		ADSTimeline->ReverseFromEnd();
	}
	

}

 

 

레퍼런스

 

https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Blueprints/UserGuide/Timelines/

 

Timelines

An Overview of Timelines in Unreal

docs.unrealengine.com

 

 

 

 

https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Components/UTimelineComponent?application_version=5.4