ue4c++日记4(控制pawn类的运动|创建游戏模式|)

news/2023/6/9 20:07:29

目录

代码速查

调用数学公式

 获取位置/设置位置

 绑定玩家输入按键,UE4传值给函数进行处理

约束获得的值再输出

创建对象

 对象绑定到xxx上

设定默认玩家 

 实例:sin函数实现往复运动

实例:删除c++类

1.删掉cpp和.h文件

2.删编译好的文件Binaries

 3.重新生成vs文件

 4.ok

pawn的c++(模型和照相机模型)

创建游戏模式

新建自己的游戏模式。 

更改默认pawn类

 更改游戏模式(游戏模式重载)

控制pawn类的移动

(在上面的“pawn的c++(模型和照相机模型)”的基础上上)

1.头文件声明变量 

2.代码文件

3.做一套轴映射


代码速查

调用数学公式

FMath::

 获取位置/设置位置

GetActorLocation
SetActorLocation

 绑定玩家输入按键,UE4传值给函数进行处理

/// <summary>/// 绑定玩家输入/// 橙色字对应UE4的轴映射的字/// this是这个对象/// 后面是UE4按键响应传值给到这个方法/// </summary>PlayerInputComponent->BindAxis("MoveForward", this, &AMyPawn::MoveForward);

约束获得的值再输出

FMath::Clamp(Value, -1.f, 1.f) 
例:CurrentVelocity.X = FMath::Clamp(Value, -1.f, 1.f) * MaxSpeed;

创建对象

 

CreateDefaultSubobject<组件>RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));//设定根组件

 对象绑定到xxx上

SetupAttachment
例:Camera->SetupAttachment(GetRootComponent());

设定默认玩家 

	AutoPossessPlayer = EAutoReceiveInput::Player0;//0号玩家

 

 实例:sin函数实现往复运动

	RunningTime += DeltaTime;FVector NewLocation = GetActorLocation();NewLocation.Z += FMath::Sin(RunningTime);SetActorLocation(NewLocation);

实例:删除c++类

1.删掉cpp和.h文件

2.删编译好的文件Binaries

 3.重新生成vs文件

 

 点是

 4.ok

pawn的c++(模型和照相机模型)

头文件public

	UPROPERTY(EditAnywhere)class UStaticMeshComponent* MyMesh;//模型UPROPERTY(EditAnywhere)class UCameraComponent* Camera;//摄像机

cpp构造函数

上半段构造静态网格体绑定在根组件上

下半段构造照相机绑定在根组件上

	RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));//设定根组件MyMesh = CreateDefaultSubobject<UStaticMeshComponent >(TEXT("Mesh"));//设定一个静态网格体MyMesh->SetupAttachment(GetRootComponent());//将静态网格体绑定到根组件下Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));Camera->SetupAttachment(GetRootComponent());Camera->SetRelativeLocation(FVector(0,0,300));Camera->SetRelativeRotation(FRotator(-45.f,0,0));

 

创建游戏模式

(好像是自带的游戏模式)

新建自己的游戏模式。 

更改默认pawn类

在上面创建的游戏模式中更改pawn类

 

 更改游戏模式(游戏模式重载)

 做出来的结果是:点运行后使用的是摄像机的镜头看。

控制pawn类的移动

(在上面的“pawn的c++(模型和照相机模型)”的基础上上)

1.头文件声明变量 

2.代码文件

 


// Called every frame
void AMyPawn::Tick(float DeltaTime)
{Super::Tick(DeltaTime);SetActorLocation(GetActorLocation() + CurrentVelocity * DeltaTime);//设定对象位置
}// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{Super::SetupPlayerInputComponent(PlayerInputComponent);/// <summary>/// 绑定玩家输入/// 橙色字对应UE4的轴映射的字/// this是这个对象/// 后面是UE4按键响应传值给到这个方法/// </summary>PlayerInputComponent->BindAxis("MoveForward", this, &AMyPawn::MoveForward);PlayerInputComponent->BindAxis("MoveRight", this, &AMyPawn::MoveRight);
}void AMyPawn::MoveForward(float Value)
{//clamp约束数值在-1到1CurrentVelocity.X = FMath::Clamp(Value, -1.f, 1.f) * MaxSpeed;
}void AMyPawn::MoveRight(float Value)
{CurrentVelocity.Y = FMath::Clamp(Value, -1.f, 1.f) * MaxSpeed;
}

3.做一套轴映射

例:对应PlayerInputComponent->BindAxis("MoveForward", this, &AMyPawn::MoveForward);的"MoveForward"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4556919.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Linux创翼拨号上网,创翼客户端下载(网络拨号工具) v4.11.4.731 最新版_数码资源网...

现在各个大学已经宽带入户了,所以呢这款创翼客户端推荐给大家,这是一个网络拨号工具,支持电信宽带,熟知校园客户端的朋友都知道校园网是拨号登录的,因此这款创翼客户端是必备的软件,校园用户必须通过它才可以顺利进行网络连接&#xff0c;享受高速的网上冲浪体验&#xff0c;可…

23种设计模式(九)——抽象工厂模式【对象创建】

文章目录 意图什么时候使用抽象工厂真实世界类比解决方案抽象工厂模式的实现抽象工厂模式的优缺点亦称: Abstract Factory 意图 抽象工厂是创建型设计模式,它强调了一系列相关产品对象(属于同一个产品族)的创建过程,它和工厂方法模式的侧重点不同,工厂方法模式更加侧重于…

VISUAL C++ MFC/ATL开发-高级篇

在VC6.0中用MFC进行COM编程首先应当明确&#xff0c;MFC中是通过嵌套类而不是多重继承来实现COM接口的&#xff0c;通过接口映射机制将接口和实现该接口的嵌套类关联起来&#xff1b;MFC中提供一套简明的宏来实现嵌套类的定义.其次&#xff0c;MFC通过CCmdTarget类实现了IUnkno…

【Java架构:基础技术】一篇文章搞掂:Java 8

本文篇幅较长&#xff0c;建议合理利用右上角目录进行查看&#xff08;如果没有目录请刷新&#xff09;。 一、Java的历史与演变 目的&#xff1a;为完全了解Java&#xff0c;需要理解Java的诞生原因、成型动力以及他继承的思想。 计算机语言的创新与发展的原因&#xff1a;适…

APUE第10章 信号

第10章 信号 signal10.1 引言 信号是软件中断。很多比较重要的应用程序都需处理信号。信号提 供了一种处理异步事件的方法&#xff0c;例如&#xff0c;终端用户键入中断键&#xff0c;会通过信 号机制停止一个程序&#xff0c;或及早终止管道中的下一个程序。 UNIX系统的早期…

走好每一步,基于C实现机器人运动学建模与标定、运动规划、轨迹规划算法

走好每一步&#xff0c;基于C实现机器人运动学建模与标定、运动规划、轨迹规划算法废话综述一&#xff1a;C部分初始C语言Chapter2-4:基本数据类型Chapter5-7:运算符、表达式、循环、分支与跳转Chapter9/10/14:函数、数组、结构体、指针函数数组指针结构体综合文件I/OC预处理、…

C++ Primer Plus(嵌入式公开课)---第5,6章 循环和关系表达式 分支语句和逻辑运算符

20220222 C Primer Plus - 第五、六章附录&#xff1a;1.ASCII码字符对照表2.C 运算符优先级第1-3章第4章 复合类型第5章 循环和关系表达式5.1 for循环5.1.1 for循环的组成部分---表达式和语句的区别、输出true和false5.1.2 回到for循环---const int SIZE 10&#xff1b;为什么…

Probabilistic Volumetric Fusion for Dense Monocular SLAM

论文标题&#xff1a;Probabilistic Volumetric Fusion for Dense Monocular SLAM 论文链接&#xff1a;https://arxiv.org/pdf/2210.01276.pdf 论文思想 提出了一种新的方法&#xff0c;通过利用深度密集的单眼SLAM和快速不确定性传播&#xff0c;从图像中重建三维场景 所提…