Ue0:从零开始的虚幻生活

Posted 才极

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ue0:从零开始的虚幻生活相关的知识,希望对你有一定的参考价值。

Ue0从零开始的虚幻生活(四):初遇UEC++

参考文献 UE官方文档:编程快速入门
目标: 用C++编译一个在半空中轻盈地漂浮并不断旋转的立方体

第一步:创建C++类

在虚幻编辑器中,点击 文件下拉菜单,然后选择 新建C++类…命令。
此时将显示选择父类菜单。可以选择要扩展的现有类,将其功能添加到自己的类。选择 Actor,因为其是可在场景中放置的最基本对象类型,然后点击 下一步。
在为新Actor命名菜单中,将Actor命名为 FloatingActor,然后点击创建类。

第二步:编辑C++类之编写头文件

只需在 AFloatingActor() 的声明下面添加下列代码:

	UPROPERTY(VisibleAnywhere)
		UStaticMeshComponent* VisualMesh;//声明一个静态网格类型的指针

第三步:编辑C++类之编写构造函数

在 AFloatingActor::AFloatingActor() 添加:

	VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));//创造一个名字为“Mesh”的静态网格,并用指针指向它。
	VisualMesh->SetupAttachment(RootComponent);//设置附件
	static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeVisualAsset=TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube");//创建一个立方体

	if (CubeVisualAsset.Succeeded())
	
		VisualMesh->SetStaticMesh(CubeVisualAsset.Object);//将立方体添加到静态网格
		VisualMesh->SetRelativeLocation(FVector(0.0f));//设置它在静态网格的位置坐标为(0,0,0)
	

第三步:编写C++类之编写Tick()函数

在 AFloatingActor::Tick(float DeltaTime) 中添加以下代码:

	FVector NewLocation = GetActorLocation();
	FRotator NewRotation = GetActorRotation();
	float RunningTime = GetGameTimeSinceCreation();
	float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
	NewLocation.Z += DeltaHeight * 20.0f;      
	float DeltaRotation = DeltaTime * 20.0f;   
	NewRotation.Yaw += DeltaRotation;
	SetActorLocationAndRotation(NewLocation, NewRotation);

第四步:保存、编译、查看结果

以上是关于Ue0:从零开始的虚幻生活的主要内容,如果未能解决你的问题,请参考以下文章

Ue0:从零开始的虚幻生活

Ue0:从零开始的虚幻生活

Ue0:从零开始的虚幻生活

Ue0:从零开始的虚幻生活

Ue0:从零开始的虚幻生活

Ue0:从零开始的虚幻生活