用C++让Pawn动起来

首先新建一个C++项目

  • 打开C++类,然后新建一个C++类

  • 选择Pawn

  • 设置一个类名,并且可以选择新建一个文件夹

创建完成后就会打开VisualStudio

  • 会看到有两个文件。一个是.cpp,一个是.h

开始写代码

需要在代码里面写的东西,就是让角色动起来

(Static Mesh和Camera) 这些在蓝图里面添加会更合适

所以在代码里面就实现前后左右走就可以了。

  1. 设置Axis

    • 打开编辑 - 项目设置 - 引擎 - 输入
  2. 写代码

    • .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);
    }
    • 编译上传代码

  3. 回到UE4

    • 找到刚刚的代码文件,创建一个蓝图

    • 创建好之后配置加上摄像头,Mesh组件即可。

  4. 放到场景中

    • 设置一下GameMode

    • 接着在世界设置里面将游戏模式设置为BP_DM_project01GameMode即可

  5. 开始游戏

    • 用按键控制物体移动成功!

UE4 用C++让Pawn动起来相关推荐

  1. UE4中Actor、Pawn、Character等各种类的详细了解。

    1.Actor Actor类是可以放到游戏场景中的游戏对象的基本类型.你如果想放置任何东西到游戏场景中,必须继承Actor类.(类似Unity中的GameObject) 2.Pawn Actor 的一 ...

  2. UE4通过鼠标在pawn四周移动摄像头

    前面的文章咱们可以在场景中移动Actor,但是无法移动观察Actor的角度和方位,现在我们要设置可以移动摄像头的方位和观察的角度. 首先我们在[项目设置]->[输入]添加两个鼠标输入:Mouse ...

  3. UE4 让材质的UV动起来

    1.Panner 节点 让纹理在UV上平移 可以根据Panner节点来设置uv的速度: 2.Rotator 节点 让纹理转动起来 3.ScreenPosition 节点 纹理会随着镜头的移动而移动

  4. [UE4]网游中角色Pawn的移动位置同步以及RTS多角色同时移动的解决方案

    下面方案的思路是: 每个Actor,为其定义一个代理(ActorProxy),真实的Actor放在服务端,代理ActorProxy放在客户端,移动Actor时,实际是移动服务端上的Actor,然后对客 ...

  5. 虚幻4皮肤材质_虚幻周报20200721 | CJ就要开始啦~

    官方知乎号:虚幻引擎 搜集日期:20200713-20200719 整理编辑: 大钊,小辉辉,马古斯,小帅帅 声明:文档搜集来自网上,难免遗漏,请联系我们投稿和添加关注.该文档版权归整理编辑者共同所有 ...

  6. 虚幻4地形怎么增加层_虚幻周报20200806 | 早晚的事

    官方知乎号:虚幻引擎 搜集日期:20200720-20200802 整理编辑: 大钊,小辉辉,马古斯,小帅帅 声明:文档搜集来自网上,难免遗漏,请联系我们投稿和添加关注.该文档版权归整理编辑者共同所有 ...

  7. [unreal4入门系列之七] UE4中的Actor类和Pawn类

    现在我们开始进入UE4的代码开发工作.首先,UE4的类框架是非常庞大的,看起来有点让人措手不及.不过正因为UE4的类框架很完善,有很多常用的代码(函数和类)是已经提供给我们了,我们只需要简单地调用来完 ...

  8. 虚幻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 ...

  9. UE4之多人局域网游戏中GameMode/PlayerController/Pawn/Character/GameInstance/GameState/PlayState 6个类的生成情况和生成个数

    注:本文所有的讨论是在以 "监听服务器的模式" 为前提下得出的.        若是独立服务器模式,那么本文得出的结论可能会不成立. 开篇先放一张图: 由上面那张图思考如下: 如果 ...

最新文章

  1. 算法:删除链表中重复的元素||
  2. 京东大型API网关实践之路
  3. java thrift client_使用thrift的java client调用python server
  4. JSTL 标签库详细介绍资料 .
  5. 【SICP练习】79 练习2.51
  6. python切片操作的几种格式_【Python杂记】第四篇:序列切片
  7. Linux查看so库访问的IP,linux-ip命令杂记
  8. 如何辨别真假柯达胶卷
  9. 如何用bat批处理编译swf项目
  10. md5和sha256算法的区别,哪个比较安全
  11. HART协议数据格式和消息结构的举例分析
  12. logit回归模型假设_LOGISTIC回归分析
  13. 网上评卷系统连接不到服务器,在网上阅卷系统过程中可能存在的问题及解决方法...
  14. Spring Data MongoDB简单的增删改查
  15. 反演地表温度空白或者是DN值无穷大+公式
  16. termux目录_手机学编程(2)目录管理命令
  17. 纪念海子离去20周年
  18. FrameGraph Extensible Rendering Architecture in Frostbite
  19. python|安装skimage库报错:required to install pyproject.toml-based projects
  20. 移动机器人路径规划算法及思考——A*算法

热门文章

  1. Mysql查询原理、计算属性理解
  2. 每周一道算法题003:翻牌
  3. DirectShow下载(支持Win10 64位系统)
  4. c语言实现读取csv文件,并对数据进行分析。
  5. 硬核 | 送你一份操作系统词典!值得收藏
  6. ROS2机器人笔记220805-重要备忘录-
  7. 2016-6-15《烽火通信科技股份有限公司》笔试题总结
  8. 《5G时代十大应用场景白皮书》,如何解锁VR技术发展潜力
  9. TGT正式上线BiFinance交易所开启交易,首日暴涨超300%
  10. 最大k乘积问题----动态规划