docs.unrealengine.com/ko/ProgrammingAndScripting/Blueprints/UserGuide/Timelines/index.html
Timeline node (타임라인 노드)는 블루프린트 내에서 간단한 시간 기반 애니메이션을 빠르게 디자인하고 게임내 이벤트에 따라 재생되도록 할 수 있는 특수 노드입니다. 단순한 값의 변동이나 시간에 걸쳐 서서히 이벤트가 발동되도록 할 수 있다는 점에서 간단한 마티네 시퀀스와 어느정도 비슷합니다. 그래프 탭이나 내 블루프린트 탭에서 타임라인에 더블클릭하는 것으로 블루프린트 에디터에서 바로 편집 가능합니다. 문 열기, 불 켜고 끄기, 기타 한 씬에서 액터에 시간 관련된 조작을 하는 등의 간단한 시네마틱 이외의 작업을 처리하기에 적합하도록 만들어 졌습니다.
타임라인을 C++로 구현하기 전에 블루프린트에서 타임라인 노드를 더블클릭하면 커브를 관리하는 탭으로 넘어갑니다.
이 커브들은 콘텐츠 브라우저에서 마우스 오른쪽을 누르고 기타에 있는 커브로 만들 수 있습니다.
블루프린트의 타임라인 노드와 마찬가지로 커브의 구성합니다.
이제 C++로 구현합니다.
// Fill out your copyright notice in the Description page of Project Settings.
ATest.h
#pragma once
#include "ProjectCE.h"
#include "GameFramework/Actor.h"
#include "Components/TimeLineComponent.h"
#include "ATest.generated.h"
UCLASS()
class PROJECTCE_API ATest : public AActor
{
GENERATED_BODY()
public:
ATest();
private:
virtual void BeginPlay() override;
virtual void Tick(float DeltaTime) override;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Timeline", Meta = (AllowPrivateAccess = "true"))
UCurveFloat* Curve1;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Timeline", Meta = (AllowPrivateAccess = "true"))
UCurveVector* Curve2;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Timeline", Meta = (AllowPrivateAccess = "true"))
UCurveLinearColor* Curve3;
FTimeline LerpTimeline;
// LerpTimeline의 길이를 설정하는 변수입니다.
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Timeline", meta = (AllowPrivateAccess = "true"))
float LerpTimelineLength;
};
// Fill out your copyright notice in the Description page of Project Settings.
Test.cpp
#include "Test.h"
ATest::ATest()
{
// Tick 함수를 사용합니다.
PrimaryActorTick.bCanEverTick = true;
// Timeline 관련 설정
Curve1 = nullptr;
Curve2 = nullptr;
Curve3 = nullptr;
LerpTimelineLength = 0.4f;
}
void ATest::BeginPlay()
{
Super::BeginPlay();
// 모든 커브가 존재할 때 타임라인을 설정합니다.
if (Curve1 != nullptr && Curve2 != nullptr && Curve3 != nullptr)
{
// 지정한 Curve에 사용할 Callback 함수들입니다.
FOnTimelineFloat Curve1Callback;
FOnTimelineVector Curve2Callback;
FOnTimelineLinearColor Curve3Callback;
// Timeline이 끝났을 때 실행할 Callback 함수들입니다.
FOnTimelineEvent LerpTimelineFinishedCallback;
// Callback 함수에 사용할 함수를 바인드합니다.
// 바인드 하는 함수에는 UFUNCTION 매크로가 적용되어야합니다.
Curve1Callback.BindUFunction(this, FName("함수이름1"));
Curve2Callback.BindUFunction(this, FName("함수이름2"));
Curve3Callback.BindUFunction(this, FName("함수이름3"));
LerpTimelineFinishedCallback.BindUFunction(this, FName("함수이름4"));
// Timeline에 Curve와 Curve를 사용할 Callback 함수를 추가합니다.
LerpTimeline.AddInterpFloat(Curve1, Curve1Callback);
LerpTimeline.AddInterpFloat(Curve2, Curve2Callback);
LerpTimeline.AddInterpFloat(Curve3, Curve3Callback);
// Timeline을 끝낼때 호출할 Cabllback 함수를 추가합니다.
LerpTimeline.SetTimelineFinishedFunc(LerpTimelineFinishedCallback);
// Timeline의 길이를 설정합니다.
LerpTimeline.SetTimelineLength(LerpTimelineLength);
}
// Timeline을 실행합니다.
LerpTimeline.PlayFromStart();
}
void ATest::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// Timeline에 Deltatime을 전달합니다.
LerpTimeline.TickTimeline(DeltaTime);
}
'Unreal Engine > C++' 카테고리의 다른 글
[Unreal Engine 4 C++] Delegate에 함수를 추가할 때 주의점 (0) | 2021.04.29 |
---|---|
[Unreal Engine 4 C++] Delegate (0) | 2021.04.29 |
[Unreal Engine 4 C++] InputComponent의 BindAction함수에 인자가 있는 함수 바인드하기 (0) | 2021.04.15 |
[Unreal Engine 4 C++] 클래스 레퍼런스를 인자로 받기 (0) | 2021.04.13 |
[Unreal Engine4 C++] 클래스의 헤더파일을 전방 선언할 수 있는 조건 (0) | 2021.04.12 |