热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UE4C++编程入门:创建旋转立方体

根据UE4官方文档的编程快速入门,通过编写C代码,在场景中创建一个旋转的立方体。该立方体通过一个C类来实现,该类继承自父类Actor&#x

根据UE4官方文档的编程快速入门,通过编写C++代码,在场景中创建一个旋转的立方体。
该立方体通过一个C++类来实现,该类继承自父类Actor,Actor类似于Unity的prefab,可以拖到场景中。通过设置public变量,可以实现类似在unity运行时,修改gameobject的public参数的结果。




一、项目设置

选择blank模板:

选择C++:

创建新C++类,File–> New C++ Class…

父类选择 Actor:

将Actor命名为 FloatingActor,然后点击 Create Class。:

点击create Class后,将切换到Visual Studio并编辑代码。




二、编写代码

FloatingActor.h新增代码如下:

UCLASS()
class UE4_CPP_TEST_API AFloatingActor : public AActor
{GENERATED_BODY()public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "FloatingActor")float FloatSpeed = 20.0f;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "FloatingActor")float RotationSpeed = 20.0f;// Sets default values for this actor's propertiesAFloatingActor();UPROPERTY(VisibleAnywhere)UStaticMeshComponent* VisualMesh;protected:
...public:
...};


FloatingActor.cpp新增代码如下:
构造函数:

// Sets default values
AFloatingActor::AFloatingActor()
{VisualMesh &#61; 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));}// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don&#39;t need it.PrimaryActorTick.bCanEverTick &#61; true;
}

Tick()函数&#xff1a;

// Called every frame
void AFloatingActor::Tick(float DeltaTime)
{FVector NewLocation &#61; GetActorLocation();FRotator NewRotation &#61; GetActorRotation();float RunningTime &#61; GetGameTimeSinceCreation();float DeltaHeight &#61; (FMath::Sin(RunningTime &#43; DeltaTime) - FMath::Sin(RunningTime));NewLocation.Z &#43;&#61; DeltaHeight * FloatSpeed; //按FloatSpeed调整高度float DeltaRotation &#61; DeltaTime * RotationSpeed; //每秒旋转等于RotationSpeed的角度NewRotation.Yaw &#43;&#61; DeltaRotation;SetActorLocationAndRotation(NewLocation, NewRotation);Super::Tick(DeltaTime);
}



三、编译C&#43;&#43;代码

法一&#xff1a;visual studio中编译

法二&#xff1a;编辑器内编译




四、放置Actor

将actor拖到视口&#xff0c;将Actor的 Location设置为&#xff08;-180、0、180&#xff09;。&#xff1a;







五、运行结果

运行时调节Rotation Speed的效果&#xff1a;



参考资料&#xff1a;
https://docs.unrealengine.com/zh-CN/Programming/QuickStart/index.html


推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
isme7
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有