美文网首页
编程快速入门

编程快速入门

作者: wjundong | 来源:发表于2021-07-18 17:40 被阅读0次

创建首个代码项目,并添加新的C++类.

创建 Actor 子类

Actor 是可在场景中放置的最基本对象类型. 创建Actor 子类, 命名为 FloatingActor

添加组件

添加静态网络组件, 以使该 Actor 在场景中可见. 这里首先声明了静态网络组件的成员变量:

// 声明静态网络组件
UPROPERTY(VisibleAnywhere)
    UStaticMeshComponent* VisualMesh;

UPROPERTY(VisibleAnywhere) 宏定义使得我们可以在编辑器中可以看到该组件.

在构造函数中初始化组件

FloatingActor 类的默认构造函数中:

// 创建静态网络组件并将其设为 FloatingActor 的根组件
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("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.0f, 0.0f));
}

上述代码首先通过CreateDefaultSubobject创建静态网络组件, 并把该组件作为我们这个 FloatingActor 类的根组件, 因为 UStaticMeshComponent 组件继承自 UPrimitiveComponent(基元组件, 是拥有几何表示的场景组件), 而场景组件具有位置行为, 所以当把该静态网络组件设为根组件时, 其位置信息就代表了我们的 FloatingActor 类的位置信息.

接下来是使用 FObjectFinder 函数来查找资源目录下的 Shape_Cube (方块模型), 如果找到, 我们就把它绑定到我们的静态网络组件, 并设置静态网络组件的初始位置信息为 (0, 0, 0), 该过程也可以使用编辑器来完成, 编译后, 拖入场景中会对该类进行实例化, 从而调用该构造函数, 因为创建静态网络组件和绑定到根组件的代码已经执行完成, 这时在细节栏里可以看到该静态网络组件的相关设置, 其中就有设置其绑定的资源.

在 Tick 函数中控制行为

// 获取位置信息和旋转信息
FVector NewLocation = GetActorLocation();
FRotator NewRotation = GetActorRotation();

// 获取游戏运行时间
float RunningTime = GetGameTimeSinceCreation();

// 计算Δt内高度变化值 Δh = sin(t + Δt) - sin(t)
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f;    

// 计算Δt内角度变化值
float DeltaRotation = DeltaTime * 20.0f;  
NewRotation.Yaw += DeltaRotation;

// 将位置信息和旋转信息同步到我们的 FloatingActor
SetActorLocationAndRotation(NewLocation, NewRotation);

Tick 函数在每一帧画面刷新时都会调用, 并传递两帧之间的时间差 Δt 参数, 我们利用该参数计算 FloatingActor 的位置信息和旋转信息应该如何变化. 上述代码实现了 FloatingActor 的上下浮动并顺时针旋转.

相关文章

  • QT-参考书

    《Qt Creator快速入门》《Qt5编程入门》 Qt进阶书籍推荐官方的《C++ GUI Qt4编程》

  • java学习书籍推荐

    一、Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握...

  • java学习书籍推荐

    一、Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握...

  • python编程 | 第一章 起步(环境搭建)

    python编程系统学习指路:快速学习 | python编程:从入门到实践 | Windows 1. python...

  • 编程快速入门

    创建首个代码项目,并添加新的C++类. 创建 Actor 子类 Actor 是可在场景中放置的最基本对象类型. 创...

  • python编程 | 第二章 变量和简单数据类型

    python编程系统学习指路:快速学习 | python编程:从入门到实践 | Windows 1. 变量 mes...

  • python编程 | 第三章 列表简介

    python编程系统学习指路:快速学习 | python编程:从入门到实践 | Windows 1 列表是什么 列...

  • Python高性能编程PDF

    Python高性能编程电子版下载:下载链接 Python编程快速上手:链接 Python编程从入门到实践:链接 P...

  • JNI

    Android JNI编程—JNI基础 一天掌握Android JNI本地编程 快速入门 Android深入理解J...

  • python编程 | 第四章 操作列表(和元组)

    python编程系统学习指路:快速学习 | python编程:从入门到实践 | Windows 1 遍历整个列 f...

网友评论

      本文标题:编程快速入门

      本文链接:https://www.haomeiwen.com/subject/iceapltx.html