虚幻引擎4利用粒子系统实现物体轨迹描绘2- 消除轨迹

前言

之前已经实现了UE4中跟随物体利用粒子系统产生轨迹的效果,文章链接如下:

虚幻引擎4利用粒子系统实现物体轨迹描绘_ADi_hhh的博客-CSDN博客

但是上篇文章还留下了两个问题

  1. 轨迹如何清除,并随时启用生成?
  2. 轨迹积累后,粒子的产生对系统的内存等是否带来压力,导致系统运行越来越吃力。

粒子频繁产生对系统运行的影响

针对这个问题,我进行了测试,在物体运动时一直产生轨迹,到后期发现物体的速度变化降低了,粒子的积累对系统运行有着显著的影响。

为了降低计算压力,我在粒子发射器之前加了一个延迟,降低粒子产生的频率,从而尽可能地降低粒子的产生,同时又能够看清楚轨迹。

延迟粒子产生

轨迹的清除

由于“在位置处生成发射器”是发射粒子后就遗忘的效果,因此这就给消除已经生成的粒子带来了困难。

粒子发射器)

但我们可以很自然地想到,如果每次发射粒子,我都把它放入到数组或容器中,然后想要删除轨迹(粒子),只要按照索引,依次消除就可以了。

是这样的,但由于不熟悉其中的各种api,我还是浪费了很多时间。

首先建立“粒子系统组件”类型的数组,命名为“已经发射的粒子”,在每次发射器发射粒子时,就利用“array add”的节点,将该粒子的对象引用加入到数组中。

存储粒子对象)

当Q键按下时,只要“轨迹粒子索引”的值+1的结果不大于当前数组的长度,就说明当前的粒子还没有消除完,因此需要执行如下循环:

  • 从数组中取出当前“轨迹粒子索引”对应的粒子组件对象引用并销毁;
  • “轨迹粒子索引+1”
  • “轨迹粒子索引+1”的值是否大于数组长度,如果大于,说明目前所有的粒子都已经消除了,执行如下:
    • 重置“轨迹粒子索引”为0;
    • 重置“已经发射的粒子”为空;
  • 如果“轨迹粒子索引+1”的值是否大于数组长度,如果不大于,继续取出对应粒子索引的对象并销毁

消除粒子

Note: 一定要注意索引不要超出界限了,因为索引从0开始,但是数组长度不是,超出界限,系统可能直接崩溃,只能重启,因此在编写这个蓝图之后,一定先保存再运行,不然可能系统又要重新搭建了。别问我为什么知道

搭建完成后,系统运行的情况就是这样的:
在这里插入图片描述

小结

本文主要承接上文利用粒子系统实现物体轨迹描绘的文章,讲述如何消除之前的轨迹。

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。

猜你喜欢

转载自blog.csdn.net/qq_45830323/article/details/130843069