任务:让场景中的Actor做上下浮动的周期性正弦运动
Float.h添加变量如下:
public:
//振动幅度
UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "Float Variates")
float A;
//振动角速度
UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "Float Variates")
float B;
private:
//游戏运行时间
float RunningTime;
Float.cpp关键代码如下:
//游戏开始运行时,随机在z=0平面初始化相关Actor的位置,在虚幻引擎中可通过FMath调用引擎自带的基本数学函数
void AFloat::BeginPlay()
{
Super::BeginPlay();
float InitialX = FMath::RandRange(0,500);
float InitialY = FMath::RandRange(0,500);
float InitialZ = 0;
SetActorLocation(FVector(InitialX, InitialY, InitialZ));
}
//每一帧更新Actor的位置,其中Tick函数提供的DeltaTime为这一帧与上一帧的时间间隔
void AFloat::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
//通过时间增量叠加得到当前游戏运行时间
RunningTime += DeltaTime;
//使Actor做振幅为A,角速度为B的正弦函数振动
FVector NewLocation = GetActorLocation();
NewLocation.Z = A * FMath::Sin(B * RunningTime);
SetActorLocation(NewLocation);
}