【UE5 C++课程系列笔记】05——组件和碰撞

效果

可以看到我们可以实现的功能是

(1)可以通过鼠标旋转视角

(2)通过使用Pawn移动组件来控制Pawn移动

(3)Pawn碰到物体会被阻挡然后逐渐滑动

(4)通过空格切换激活/关闭粒子效果

步骤

一、创建Pawn

  1. 新建一个C++类,继承Pawn类
  1. 再添加一个"PawnMovementComponent"

这里命名为"CollisionPawnMovememntComponent"

  1. 在 CollisionPawn.h中添加如下代码来创建粒子系统组件

添加所需头文件

在构造函数中创建球体碰撞组件作为Pawn的根组件,然后设置球体半径和碰撞配置名称

从静态网格体资源创建并附加半径为50的可见球体。其与刚才创建的半径40的球体组件无法完全吻合,因此需将把其缩小80%。还需将其向下移动40单位,使其中心与球体组件的中心对齐

创建火焰粒子系统附加在球形组件上,设置粒子默认不激活

创建弹簧臂组件并设置

创建相机组件

设置自动控制Pawn

  1. 编译后可以在内容浏览器中看到"CollsionPawn"

创建基于CollsionPawn的蓝图类

这里命名为"BP_CollsionPawn"

打开"BP_CollsionPawn",可以看到我们已经成功添加了这些组件,根组件

二、操控Pawn

  1. 添加操作映射和轴映射
  1. 下面需要在pawn移动组件中编写逐帧移动方式。在CollisionPawnMovementComponent.h中,添加如下代码来重写TickComponent方法,实现自定义每帧更新逻辑
  1. 在CollisionPawnMovementComponent.cpp中,添加TickComponent方法的实现。首先检查移动条件是否满足,然后移动Pawn,在移动过程中发生碰撞就试着滑过去
  1. 下面开始使用创建的pawn移动组件,在"CollsionPawn.h"中添加自定义的pawn移动组件
  1. 在"CollisionPawn.cpp"中引入自定义pawn移动组件的头文件

创建自定义pawn移动组件实例

  1. 在"CollisionPawn.h"中,通过重写GetMovementComponent函数访问该Pawn当前所用Pawn移动组件
  1. 在"CollisionPawn.cpp"中,实现GetMovementComponent方法,返回自定义Pawn移动组件
  1. 在"CollsionPawn.h",创建处理Pawn会接收的输入函数
  1. 在"CollsionPawn.cpp"中添加输入函数的实现

将函数绑定到输入事件

此时编译后就可以看到开头所示的效果了。

官方参考文档:

https://dev.epicgames.com/documentation/zh-cn/unreal-engine/quick-start-guide-to-components-and-collision-in-unreal-engine-cpp?application_version=5.3

相关推荐
zhangrelay1 小时前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
木木_王1 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
lkforce1 小时前
MiniMind学习笔记(三)--train_pretrain.py(预训练)
笔记·机器学习·ai·预训练·minimind·train_pretrain
OSwich1 小时前
【 Godot 4 学习笔记】数组(Array)
笔记·学习·godot
数据皮皮侠AI1 小时前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节
其实防守也摸鱼2 小时前
面试常问问题总结--护网蓝队方向
网络·笔记·安全·面试·职场和发展·护网·初级蓝队
z19408920663 小时前
Word题库转结构化:告别换行、选项与答案乱象
经验分享·笔记·语音识别
泽克4 小时前
3.4 智能化系统工程施工技术
笔记
南境十里·墨染春水4 小时前
C++笔记 forward完美转发
开发语言·c++·笔记
吃着火锅x唱着歌4 小时前
深度探索C++对象模型 学习笔记 第四章 Function语意学(2)
c++·笔记·学习