目录
- 前言
- 粒子频繁产生对系统运行的影响
- 轨迹的清除
- 小结
前言
之前已经实现了UE4中跟随物体利用粒子系统产生轨迹的效果,文章链接如下:
虚幻引擎4利用粒子系统实现物体轨迹描绘_ADi_hhh的博客-CSDN博客
但是上篇文章还留下了两个问题
- 轨迹如何清除,并随时启用生成?
- 轨迹积累后,粒子的产生对系统的内存等是否带来压力,导致系统运行越来越吃力。
粒子频繁产生对系统运行的影响
针对这个问题,我进行了测试,在物体运动时一直产生轨迹,到后期发现物体的速度变化降低了,粒子的积累对系统运行有着显著的影响。
为了降低计算压力,我在粒子发射器之前加了一个延迟,降低粒子产生的频率,从而尽可能地降低粒子的产生,同时又能够看清楚轨迹。
轨迹的清除
由于“在位置处生成发射器”是发射粒子后就遗忘的效果,因此这就给消除已经生成的粒子带来了困难。
)
但我们可以很自然地想到,如果每次发射粒子,我都把它放入到数组或容器中,然后想要删除轨迹(粒子),只要按照索引,依次消除就可以了。
是这样的,但由于不熟悉其中的各种api,我还是浪费了很多时间。
首先建立“粒子系统组件”类型的数组,命名为“已经发射的粒子”,在每次发射器发射粒子时,就利用“array add”的节点,将该粒子的对象引用加入到数组中。
)
当Q键按下时,只要“轨迹粒子索引”的值+1的结果不大于当前数组的长度,就说明当前的粒子还没有消除完,因此需要执行如下循环:
- 从数组中取出当前“轨迹粒子索引”对应的粒子组件对象引用并销毁;
- “轨迹粒子索引+1”
- “轨迹粒子索引+1”的值是否大于数组长度,如果大于,说明目前所有的粒子都已经消除了,执行如下:
- 重置“轨迹粒子索引”为0;
- 重置“已经发射的粒子”为空;
- 如果“轨迹粒子索引+1”的值是否大于数组长度,如果不大于,继续取出对应粒子索引的对象并销毁
Note: 一定要注意索引不要超出界限了,因为索引从0开始,但是数组长度不是,超出界限,系统可能直接崩溃,只能重启,因此在编写这个蓝图之后,一定先保存再运行,不然可能系统又要重新搭建了。别问我为什么知道
搭建完成后,系统运行的情况就是这样的:
小结
本文主要承接上文利用粒子系统实现物体轨迹描绘的文章,讲述如何消除之前的轨迹。
如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。