自学内容网 自学内容网

UE5 C++ TimeLine 时间轴练习

一. Actor引入头文件

#include "Components/TimelineComponent.h"

声明CurveFloat 和 TimelineComponent

UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "MyCurve")
UCurveFloat* MyCurveFloat;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyCurve")
UTimelineComponent* MyTimeline;

FOnTimelineFloat TimelineDelegate;
FOnTimelineEvent TimelineFinishedDelegate;
UFUNCTION()
void TimelineStart(float value);

二.Timeline 逻辑

TimelineActor中构造函数里创建组件

MyTimeline = CreateDefaultSubobject<UTimelineComponent>(TEXT("MyTimeLineComponent")); 

绑定一个时间轴执行时事件,一个时间轴完成事件。

设置浮点曲线,设置数组循环(不循环)。


Super::BeginPlay();
TimelineDelegate.BindUFunction(this,TEXT("TimelineStart"));   //dailiyoucanshu
TimelineFinishedDelegate.BindUFunction(this,TEXT("TimelineFinished"));
MyTimeline->AddInterpFloat(MyCurveFloat,TimelineDelegate);
MyTimeline->SetLooping(false);
MyTimeline->PlayFromStart();
//MyTimeline->Play();
MyTimeline->SetTimelineFinishedFunc(TimelineFinishedDelegate);   //

将代理完成

void AMyTimeLineActor::TimelineStart(float value)
{
GEngine->AddOnScreenDebugMessage(-1,5.0f,FColor::Red,FString::Printf(TEXT("Timelineplay %f"),value));
float YawRotation = FMath::Lerp(0,90,value);
MyDoorMesh->SetRelativeRotation(FRotator(0,YawRotation,0));
}

void AMyTimeLineActor::TimelineFinished()
{
GEngine->AddOnScreenDebugMessage(-1,5.0f,FColor::Red,TEXT("TimelineFinshed"));

}

创建浮点曲线

赋值曲线

效果:


原文地址:https://blog.csdn.net/m0_64217692/article/details/137778792

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!