UE4 用C++让Pawn动起来
用C++让Pawn动起来
首先新建一个C++项目
- 打开C++类,然后新建一个C++类
- 选择Pawn
- 设置一个类名,并且可以选择新建一个文件夹
创建完成后就会打开VisualStudio
- 会看到有两个文件。一个是.cpp,一个是.h
开始写代码
需要在代码里面写的东西,就是让角色动起来
(Static Mesh和Camera) 这些在蓝图里面添加会更合适
所以在代码里面就实现前后左右走就可以了。
设置Axis
- 打开编辑 - 项目设置 - 引擎 - 输入
写代码
.h 代码
// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "GameFramework/Pawn.h" #include "CP_Pawn.generated.h"UCLASS() class DM_PROJECT01_API ACP_Pawn : public APawn {GENERATED_BODY()public:// Sets default values for this pawn's propertiesACP_Pawn();protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;public: // Called every framevirtual void Tick(float DeltaTime) override;// Called to bind functionality to inputvirtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;float maxSpeed; //移动的速度FVector Alter_Location; //位置的变化void MoveForward(float value); //向前后走void MoveRight(float value); //向左右走};
.cpp 代码
// Fill out your copyright notice in the Description page of Project Settings.#include "CP_Pawn.h" #include "Components\InputComponent.h"// Sets default values ACP_Pawn::ACP_Pawn() {// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;this->maxSpeed = 1;this->Alter_Location = FVector(0.f); }// Called when the game starts or when spawned void ACP_Pawn::BeginPlay() {Super::BeginPlay();}// Called every frame void ACP_Pawn::Tick(float DeltaTime) {Super::Tick(DeltaTime);FVector Current_Location = GetActorLocation() + (Alter_Location * - maxSpeed);SetActorLocation(Current_Location);}// Called to bind functionality to input void ACP_Pawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) {Super::SetupPlayerInputComponent(PlayerInputComponent);PlayerInputComponent->BindAxis(TEXT("MoveForward"),this,&ACP_Pawn::MoveForward);PlayerInputComponent->BindAxis(TEXT("MoveRight"),this,&ACP_Pawn::MoveRight);} void ACP_Pawn::MoveForward(float value) {this->Alter_Location.X = FMath::Clamp(value, -1.f, 1.f); } void ACP_Pawn::MoveRight(float value) {this->Alter_Location.Y = FMath::Clamp(value, -1.f, 1.f); }
编译上传代码
回到UE4
找到刚刚的代码文件,创建一个蓝图
创建好之后配置加上摄像头,Mesh组件即可。
放到场景中
设置一下GameMode
接着在世界设置里面将游戏模式设置为BP_DM_project01GameMode即可
开始游戏
用按键控制物体移动成功!
UE4 用C++让Pawn动起来相关推荐
- UE4中Actor、Pawn、Character等各种类的详细了解。
1.Actor Actor类是可以放到游戏场景中的游戏对象的基本类型.你如果想放置任何东西到游戏场景中,必须继承Actor类.(类似Unity中的GameObject) 2.Pawn Actor 的一 ...
- UE4通过鼠标在pawn四周移动摄像头
前面的文章咱们可以在场景中移动Actor,但是无法移动观察Actor的角度和方位,现在我们要设置可以移动摄像头的方位和观察的角度. 首先我们在[项目设置]->[输入]添加两个鼠标输入:Mouse ...
- UE4 让材质的UV动起来
1.Panner 节点 让纹理在UV上平移 可以根据Panner节点来设置uv的速度: 2.Rotator 节点 让纹理转动起来 3.ScreenPosition 节点 纹理会随着镜头的移动而移动
- [UE4]网游中角色Pawn的移动位置同步以及RTS多角色同时移动的解决方案
下面方案的思路是: 每个Actor,为其定义一个代理(ActorProxy),真实的Actor放在服务端,代理ActorProxy放在客户端,移动Actor时,实际是移动服务端上的Actor,然后对客 ...
- 虚幻4皮肤材质_虚幻周报20200721 | CJ就要开始啦~
官方知乎号:虚幻引擎 搜集日期:20200713-20200719 整理编辑: 大钊,小辉辉,马古斯,小帅帅 声明:文档搜集来自网上,难免遗漏,请联系我们投稿和添加关注.该文档版权归整理编辑者共同所有 ...
- 虚幻4地形怎么增加层_虚幻周报20200806 | 早晚的事
官方知乎号:虚幻引擎 搜集日期:20200720-20200802 整理编辑: 大钊,小辉辉,马古斯,小帅帅 声明:文档搜集来自网上,难免遗漏,请联系我们投稿和添加关注.该文档版权归整理编辑者共同所有 ...
- [unreal4入门系列之七] UE4中的Actor类和Pawn类
现在我们开始进入UE4的代码开发工作.首先,UE4的类框架是非常庞大的,看起来有点让人措手不及.不过正因为UE4的类框架很完善,有很多常用的代码(函数和类)是已经提供给我们了,我们只需要简单地调用来完 ...
- 虚幻4 ue4 学习笔记pwan篇 1.4 pawn结合UPawnMovementComponent类 移动组件实现 移动球体添加物理碰撞...
MyPawn.h部分 1 // Fill out your copyright notice in the Description page of Project Settings. 2 3 #pra ...
- UE4之多人局域网游戏中GameMode/PlayerController/Pawn/Character/GameInstance/GameState/PlayState 6个类的生成情况和生成个数
注:本文所有的讨论是在以 "监听服务器的模式" 为前提下得出的. 若是独立服务器模式,那么本文得出的结论可能会不成立. 开篇先放一张图: 由上面那张图思考如下: 如果 ...
最新文章
- 算法:删除链表中重复的元素||
- 京东大型API网关实践之路
- java thrift client_使用thrift的java client调用python server
- JSTL 标签库详细介绍资料 .
- 【SICP练习】79 练习2.51
- python切片操作的几种格式_【Python杂记】第四篇:序列切片
- Linux查看so库访问的IP,linux-ip命令杂记
- 如何辨别真假柯达胶卷
- 如何用bat批处理编译swf项目
- md5和sha256算法的区别,哪个比较安全
- HART协议数据格式和消息结构的举例分析
- logit回归模型假设_LOGISTIC回归分析
- 网上评卷系统连接不到服务器,在网上阅卷系统过程中可能存在的问题及解决方法...
- Spring Data MongoDB简单的增删改查
- 反演地表温度空白或者是DN值无穷大+公式
- termux目录_手机学编程(2)目录管理命令
- 纪念海子离去20周年
- FrameGraph Extensible Rendering Architecture in Frostbite
- python|安装skimage库报错:required to install pyproject.toml-based projects
- 移动机器人路径规划算法及思考——A*算法