虚幻5---第15部分---宝藏(掉落物)

虚幻5---第15部分---宝藏(掉落物)

宝藏!(Treasure!)

------从可破坏物体中生成拾取物

重点与流程:

  1. 下载和导入对应资产。下载声音,转化声音,导入声音,制作metasound。
  2. 在metasound设置和绘制好声音和声音衰减。
  3. 进入Item的C++文件夹,右键,创建从物品类派生的C++类。
  4. 在里面重写sphere overlap函数。
  5. 在指定C++文件里面写对应的声音变量和声音播放函数。注意头文件。
  6. 回到编辑器,新建对应蓝图,在里面设置网络体、声音。
  7. 测试。
示例图:


注意

  1. ue5.4导入声音,可以自动转化成wav。

生成 (ActorSpawning Actors)

------生成宝藏拾取物

重点与流程

  1. 在可破坏蓝图里面绘制,里面可以生成宝物。
示例图

从 C++ 生成( ActorSpawning Actors from C++)

------在代码中动态生成我们的宝藏

重点与流程

  1. 了解UClass的使用和作用。设置蓝图类。
  2. 创建UClass对象。在C++里设置可破坏物破坏后有宝藏类。
  3. 用TSubclassOf来代替UClass。
  4. 设置碰撞。让胶囊体来碰撞,让我们可以站在罐子碎片的实际碰撞点,而不是出现不准确的颠簸。
示例图

注意:

  1. 测试如果出现死循环,是因为罐子和拾取物的碰撞和检测进入死循环。解决办法:设置一个bool在重叠函数中决定是否return。(在146的23:30处)

不同类型的宝藏(Different Types of Treasure)

------创建 TSubclassOf 变量数组

重点与流程

  1. 在C++里增加金币数量来定义掉落物的价值。在宝藏的蓝图里面设置
  2. 设置一下宝藏的旋转运动。
  3. 创建子蓝图来添加更多的宝藏,而不用重新写代码和设置。多设置点宝藏。只需要设置网络体和金币值。
  4. 使用TSubclassOf的数组来存储多个蓝图变量。在可破坏蓝图里面添加数组内容
  5. 修改可破坏文件代码里面的击中物品出现逻辑。添加随机值,使出现物品随机。
示例图

注意:

  1. 小心因为数组越界访问导致的系统崩溃。它不会编译报错,只在运行到某一个行为时崩溃。

不同类型的可破坏物体(Different Types of Breakables)

------增加可破坏物体的类型

重点与流程

  1. 选择其它的容器资产,新建几何集合,碎裂它,再创建对应的子蓝图,设置好几何集合的类型,胶囊体,出来的宝藏类型。
  2. 复制它的蓝图,生成一些无宝藏的蓝图版本。
  3. 同样的步骤,多找一些容器来重复。
  4. 在C++里添加bool值来防止多次调用击中函数。
示例图


注意:

  1. 如果我们打破了东西,我们不想再次打破它,不想多次调用这个被击中函数。

Niagara 系统(Niagara Systems)

------为拾取物添加闪烁效果

重点与流程

  1. 创建一个Niagara系统。了解Fountain的各个参数功能。
  2. 设置符合调节的特效,记得保存资产。
示例图

注意:

  1. 虚幻5.4移除了Vortex Velocity。只能在Vortex force里面设置旋转。

Niagara 组件(Niagara Components)

------将我们的发射器添加到物品上

重点与流程

  1. 尝试在蓝图里给武器添加Niagara。
  2. 在C++里添加Niagara组件,在物品文件构造它,
  3. 在物品蓝图处设置Niagara。
  4. 在C++设置装备后取消特效。
示例图

注意:

  1. 如果发现Niagara效果在某个物品效果不太好,比如范围太小,可以通过改变缩放来调整。
  2. 如果出现人踩到武器上面,注意检测碰撞(物理与查询)是否启用。参考设置

挑战15:

  1. 多添加几种宝藏类型,在游戏中试试从哪些可破坏物体里掉落什么宝藏。
相关推荐
大鹏说大话2 小时前
深入理解 Go 中的 make(chan chan error):高阶通道的典型用法与实战场景
开发语言·后端·golang
俩娃妈教编程2 小时前
洛谷选题:P1888 三角函数
c++·算法
yuuki2332332 小时前
【C++】模拟实现 红黑树(RBTree)
java·开发语言·c++
csbysj20202 小时前
Bootstrap4 卡片
开发语言
一匹电信狗2 小时前
【Linux我做主】从 fopen 到 open:Linux 文件 I/O 的本质与内核视角
linux·运维·服务器·c++·ubuntu·小程序·开源
IvanCodes2 小时前
九、C语言动态内存管理
c语言·开发语言·算法
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于Java的网上书店管理系统为例,包含答辩的问题和答案
java·开发语言
HAPPY酷2 小时前
C++ 音视频项目与 UE5 渲染与电影制作的关系
c++·ue5·音视频
Wyn_2 小时前
【心得】医疗设备 - Qt 工程师进阶指南
开发语言·qt·医疗·学习路线