虚幻C++学习笔记01--官方案例:FloatingActor

首先接触虚幻文档中提供给新手的第一个案例

悬浮旋转方块

虚幻C++学习笔记01--官方案例:FloatingActor_第1张图片

具体操作的步骤可以点击下方链接:

编程快速入门 | 虚幻引擎文档 (unrealengine.com)

其中整理一下在这个初学课堂中学到的内容:

其中,在提供的重载函数Tcik当中需要接收float类型的DeltaTime参数,

DeltaTime

是解决FPS(即帧数)不断变化、不稳定的一个设计思想,很多程序需要不断刷新执行,那么一个属性值将不断被应用,如果每秒刷新次数不同,那么诸如Tick函数这样的功能被调用的次数也就不同,譬如,假设有这样一个情境,需要每帧都调用一次Debuff计算如减血(-1HP),那么一秒内60FPS的会减60滴血,120FPS的会减120滴血,问题来了,如何每帧调用的同时(你总不能规定某些帧运行Tick,某些帧不运行Tick吧)保证不同设备的人可以获得相同的反馈,

所以,DeltaTime应运而出,DeltaTime = 1秒/帧数,那么Debuff乘以DeltaTime不就可以有效地解决问题了嘛

60FPS:-1Hp*DeltaTime*60(次)

120FPS::-1Hp*DeltaTime*120(次)

最终结果都为-1HP

UPROPERTY(VisibleAnyWhere)

UPROPERTY(VisibleAnywhere)
		UStaticMeshComponent* VisualMesh;

(我的理解)这个的功能在UE4编辑界面的具体体现为,你可以在编辑界面对创建的VisualMesh进行指定修改调试

虚幻C++学习笔记01--官方案例:FloatingActor_第2张图片

在细节面板中,会出现可以修改的StaticMesh,可以指定对象。

悬浮代码

void AfloatingActor::Tick(float DeltaTime)
{

	Super::Tick(DeltaTime);
	FVector NewLocation = GetActorLocation();
	FRotator NewRotation = GetActorRotation();
	float RunningTime = GetGameTimeSinceCreation();
	float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
	NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
	float DeltaRotation = DeltaTime * 20.0f;    //Rotate by 20 degrees per second
	NewRotation.Yaw += DeltaRotation;
	SetActorLocationAndRotation(NewLocation, NewRotation);
}

GetGameTimeSinceCreation()配合Sin函数可以有效地限制DeltaHeight并且有效地实现上下悬浮的效果,其Yaw轴的旋转是跟随时间变化而实时变化,用到了DeltaTime,体现了上文所讲的Tick作用。

虚幻引擎中的坐标轴

虚幻C++学习笔记01--官方案例:FloatingActor_第3张图片

即 俯仰(Pitch)、偏摆(Yaw)、翻滚(Roll)

好了,今天的总结到此结束,有不足之处还请大家多多包涵

你可能感兴趣的:(小白学习,虚幻,学习,游戏引擎)