版权声明:本文为CSDN博主「a1406215966」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
正文
本文章用于记录博主本人 Niagara 扩散效果的实现步骤,也供大家学习使用,欢迎转载 实现效果如下图所示:实现一个水波动态纹扩散效果
并且要实现一定的通用和可配置性,所以设计了三个可控参数:
- 颜色
- 呼吸速度
- 环数
步骤简介
- Create Shader
- Create Niagara Emitter
- Create an Empty Emitter
- Emitter Setting
- Emitter Update
- Particle Spawn
- Particle Update
- Render
- Create BluePrint Actor
Create Shader
首先我们需要下图这样的环状透明模式的材质,并可以设置发光颜色和强度
我们用 UE4 自带的一些环状 MaskFunction 不难实现,实现思路如下:
Create Niagara Emitter
Create an Empty Emitter
在资源中右键,在 FX 文件夹中选择 Emitter,创建一个 Empty Emitter 类型
Emitter Setting
勾选 LocalSpace:目的是让粒子系统的缩放受 场景缩放 控制
Emitter Update
增加一个 SpawnRate 组件。
在 User Exposed 中增加三个变量:Float; Vextor; Int 各一个,分别命名为 SpawnRate; Color; Amount,他们在后面分别代表 波动速度、颜色、同一时间出现的环数 。
在 SpawnRate 数值后面点击倒三角,选择成 MultiplyFloatbyInt 并分别设置上上面的两个变量(SpawnRate, Amount)
Particle Spawn
在 InitializeParticle 组件中,将 MeshAttributes 中设置成 固定缩放(Uniform),值为 1
该设置修改注解:此设置将作为粒子生成的时的基础缩放值存在,后续在粒子更新中的缩放都是基于这个的基础上再进行缩放的;如果用默认设置,则在后续步骤中添加 MeshRenderer 后预览窗口就看不到任何模型
在 InitializeParticle 组件中,将 LifeTime 设置成DivideFloat,用 1 除以 SpawnRate
Particle Update
增加一个 Scale Color 组件
将其 ScaleRGB 变量指定为上面定义的 RingColor
将 ScaleAlpha 设置成 FloatFromCurve, 设置 0 点值为 1 , 1 点值为 0。并将 CurveIndex 设置成 MultiplyFloat ,将 Age 和 SpawnRate 相乘(是 Age,不是 NormalizedAge, 设置成后者会出现扩散后暂停等待粒子死亡的问题)
增加 Scale Mesh Size 组件
按照下图对其进行配置
Render
Sprite Renderer 组件,添加 Mesh Renderer 组件:设置模型为系统的 Plane,Explicit Mat 设置为 前面创建的材质 的 材质实例
Create BluePrint Actor
给前面创建的 Emitter 创建一个 NiagaraSystem ,并将 System 添加进蓝图中,并创建下图所示 Function
并将此 Function 连接在构建脚本上,暴露出相应参数,然后就可以拖入场景尽情配置啦