当前位置: 首页 > article >正文

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

效果

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

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

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

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

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

步骤 

一、创建Pawn 

1. 新建一个C++类,继承Pawn类 

2. 再添加一个“PawnMovementComponent”

这里命名为“CollisionPawnMovememntComponent”

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

添加所需头文件

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

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

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

创建弹簧臂组件并设置

创建相机组件

设置自动控制Pawn

4. 编译后可以在内容浏览器中看到“CollsionPawn”

创建基于CollsionPawn的蓝图类

这里命名为“BP_CollsionPawn”

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

二、操控Pawn

1. 添加操作映射和轴映射

2. 下面需要在pawn移动组件中编写逐帧移动方式。在CollisionPawnMovementComponent.h中,添加如下代码来重写TickComponent方法,实现自定义每帧更新逻辑

3. 在CollisionPawnMovementComponent.cpp中,添加TickComponent方法的实现。首先检查移动条件是否满足,然后移动Pawn,在移动过程中发生碰撞就试着滑过去

4. 下面开始使用创建的pawn移动组件,在“CollsionPawn.h”中添加自定义的pawn移动组件

5. 在“CollisionPawn.cpp”中引入自定义pawn移动组件的头文件

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

6. 在“CollisionPawn.h”中,通过重写GetMovementComponent函数访问该Pawn当前所用Pawn移动组件

7. 在“CollisionPawn.cpp”中,实现GetMovementComponent方法,返回自定义Pawn移动组件

8. 在“CollsionPawn.h”,创建处理Pawn会接收的输入函数

9. 在“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


http://www.kler.cn/a/414931.html

相关文章:

  • 跨平台应用开发框架(3)-----Qt(样式篇)
  • NFT Insider #157:The Sandbox 开启新一期 VoxEdit 比赛
  • 计算机是如何工作的
  • 【线程】Java多线程代码案例(2)
  • 人工智能与传统控制系统的融合发展
  • 九、Ubuntu Linux操作系统
  • Ubuntu nvidia-cuda-toolkit 升级
  • Chrome://常用的内部页面地址
  • java回文数
  • MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`
  • 在 Ubuntu 18.04 上安装 MySQL 5.7和MySQL 8
  • 【网络安全 | 漏洞挖掘】绕过SAML认证获得管理员面板访问权限
  • Python知识分享第九天补充
  • rocylinux9.4安装prometheus监控
  • js:循环、数组
  • 网络技术-VRRP(虚拟路由冗余协议)部署介绍
  • Element UI Collapse 折叠面板和表格结合高度闪动问题
  • daos源码编译
  • Redis 可观测最佳实践
  • 变换矩阵左乘与右乘的区别和应用
  • Linux开发者的CI/CD(11)jenkins变量
  • 代码随想录算法训练营第六十天|Day60 图论
  • Flutter:首页数据缓存,读取缓存,更新缓存
  • git rebase-优雅合并与修改提交
  • ESP32 wifi smartConfig 配网时密码错误导致一直死循环问题解决
  • sqlmap学习,打靶sqli-labs.(1-19)