粒子效果
场景中应该有两个粒子发射器,一个负责上半部Sprite粒子运动,另外一个负责下面人形粒子的生成。仔细观察可以得到更多的细节:上半部的粒子发射器似乎发射的也是一个个的粒子系统,因为每个粒子上粒子都有相对独立的运动模式;下半部的人形粒子在生成和湮灭之间,会以一定速率播放挥手的动画,且每个人形粒子的挥手动画速率也有微弱区别。
Niagara蓝图部分
蓝图中正如我们预料的,有两个发射器,左侧对应上半部Sprite粒子发射器,右侧对应人形粒子发射器。其发射器内部相对较为简单,没有用到Simulation Stage、Particle Attribute Reader或是Grid 3D/2D等。我们着重需要注意的是Render渲染部分的渲染器的使用:左侧使用了Niagara Particle System Renderer,右侧使用了Custom Skel Mesh Component。
效果实现分析
我们直接来看两个渲染器:两个渲染器的创建都是先创建Component Renderer,再在Component Renderer里通过选择不同的Component Type来实现不同的特性的。
我们分别来看。
Niagara Particle System Renderer
这是通过设置Component Type为NiagaraComponent,如此渲染器就会自动从Component Renderer更名为Niagara Particle System Renderer。此外还有一众的参数可供配置。
在这个渲染器中,我们可以选择要加载的子Niagara System资产,它和父Niagara System是一个什么样的关系呢?想象一下我们现在有一个Niagara系统,在场景中spawn了好多个sprite粒子出来,现在把这些粒子都替换成另外一个Niagara System,这些粒子的位置会称为子Niagara System的新的模拟原点。
Custom Skel Mesh Component
也是通过设置Component Type为Niagara Custom Skel Mesh Component Renderer而实现的Component Renderer的变体。在这个渲染器中,我们可以自定义模型和动画,以及设置动画播放速率(Anim Play Rate)等参数。前面进行了Particles.AnimationPlayRate的设定(随机),并将这个参数绑定到Anim Play Rate上。
我们打开Niagara Custom Skel Mesh Component Renderer来看一看这个类型具体是什么。通过找到资产,可以看到它是一个蓝图类,其父类是一个SkeletalMeshComponent。
打开蓝图类,里面只有一个函数,即传入并设定播放速率。
总结
目前来说,这个Component Renderer还处于测试阶段,用其原话讲,就是基本没有进行过优化,使用要慎重。在这个组件的帮助下能够赋予我们在组件使用上的极大的灵活性,但是,“能力越大,责任越大”,当我们使用其功能时,需要慎重对待其可能带来的消耗。