这次我们来拆一个很多特效新手都想做的效果:英雄联盟风格的攻击特效。这套效果在 MOBA 类游戏里非常常见:人物出手的一瞬间,武器带出弧形刀光,命中时爆出亮眼火花,地面留下拖尾痕迹,镜头再配合震动和音效,整个攻击的“手感”一下就出来了。本文不是搬运某个现成特效资产,而是从 Niagara 系统出发,把这类攻击特效拆成几个可独立制作的环节:刀光拖尾、命中爆点、冲击波、材质发光、动画通知触发。每个环节都会给出具体的创建思路、模块配置和调试方法,适合已经入门 UE 但还没系统做过粒子特效的开发者参考。
这篇文章会围绕“国语双字”这个关键词多说一句:教程本身以中文讲解再加中文字幕为例,方便国内开发者直接跟着操作,不需要再猜节点意思是干什么的。你只要跟着顺序做完,就能得到一个可以在第三人称角色身上触发的近战攻击特效原型。重点不是复制某个英雄的最终效果,而是掌握 Niagara 制作攻击特效的拆解思路。看完之后,你可以把同样的方法迁移到手刀、剑气、炮击、爆炸等不同攻击类型上。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | UE 粒子特效制作教程,以 Niagara 系统为主 |
| 技术栈 | Niagara、材质编辑器、蓝图、动画通知 |
| 适用引擎 | UE4 与 UE5 均可,本文以 UE5 默认 Niagara 插件流程为例 |
| 是否需要编程 | 核心特效无需 C++,仅少量蓝图逻辑,蓝图节点可以通过图表方式实现 |
| 主要产出 | 近战攻击刀光、命中爆点、冲击波、地面拖尾、发光材质 |
| 触发方式 | 动画通知 AnimNotify / 蓝图 Spawn Niagara System |
| 是否支持批量制作 | 支持,掌握一套流程后可批量替换材质、颜色、发射器参数 |
| 是否含国语双字 | 根据教程标题,包含国语配音和中文字幕,适合国内学习者 |
| 推荐硬件 | 普通 i5/16G 内存/任意支持 DX11 的显卡即可,特效模拟占用较低 |
| 学习难度 | 中等,适合已熟悉 UE 基础界面的开发者 |
以上能力项中,唯一需要你自己准备的是角色模型和武器模型。如果没有现成素材,可以先用 UE 自带的第三人称模板角色和 BasicShape 模型临时替代,功能流程完全一致。教程里重点讲的 Niagara 系统和材质逻辑,并不依赖特定角色资产,所以即使你现在手头没有任何游戏美术资源,也能把整个特效系统跑通。
2. 攻击特效拆解与制作思路
英雄联盟风格的攻击特效,看起来花哨,实际上可以拆成四到五个独立层。每一层都可以单独先做、再叠加,不要试图在一个发射器里解决所有效果。推荐拆分方式如下:
| 特效层次 | 作用 | 建议实现方式 |
|---|---|---|
| 刀光挥舞 | 表现攻击轨迹,让玩家看清“这一下劈到了哪里” | Niagara Ribbon 发射器,按武器移动轨迹生成条带 |
| 打击火花 | 命中瞬间的爆发光点,强化顿挫感 | GPU Sprite 发射器,发射 30~80 个粒子 |
| 冲击波 | 命中位置向外扩散的环形光效 | Sprite 或 Mesh 发射器,缩放半径,透明度渐隐 |
| 地面痕迹 | 强化攻击方向和落点,常见于技能范围 | 平面 Mesh 或 Ribbon,叠加半透明材质 |
| 光晕与镜头反馈 | 整体氛围提升,通常配合后处理或蓝图震屏 | Niagara 外发光、相机轻微震动 |
制作顺序建议是先做刀光,再做命中爆点,最后叠加冲击波和地面痕迹。原因很简单:刀光决定攻击是否“看得清楚”,命中爆点决定攻击是否“打中了”,冲击波和地面痕迹则用来丰富细节。如果一开始就把所有层混在一个 Niagara 系统里,调试时很难判断到底是哪个模块出了问题。
这套流程的核心不是单个节点的参数,而是“发射器分层 + 材质叠加 + 蓝图触发”。后面每一章都会按照这个思路往下走。
3. 环境准备与前置条件
在开始前,先确认你的 UE 工程已经包含以下条件。
3.1 基础软件要求
- Unreal Engine 5.0 及以上版本,UE4.26 以后也支持相同 Niagara 流程。
- Windows / macOS / Linux 均可,Windows 下开发调试最方便。
- 显卡建议支持 DirectX 11,显存 4G 以上即可,粒子特效对显存要求并不高。
- 如果使用 UE5,建议把项目设置为 DirectX 12 或默认的 SM5,否则部分高级发光材质效果可能显示不一致。
3.2 启用 Niagara 插件
在 UE 5 中 Niagara 插件默认启用。如果你的项目是早期版本或手动关闭过插件,需要按下述流程开启:
- 打开菜单 “编辑” -> “插件”。
- 搜索 “Niagara”。
- 确保 “Niagara”、“Niagara Core”、“Niagara Extended” 均处于勾选状态。
- 如果修改了插件状态,重启编辑器并重新编译着色器。
3.3 创建项目目录结构
建议在 Content 下创建专门的目录,方便后续批量制作特效时统一管理。以下命令可以在终端中快速创建目录结构:
# 在项目 Content 目录下创建 FX 专用目录 mkdir -p FX/Materials mkdir -p FX/Textures mkdir -p FX/NiagaraSystems mkdir -p FX/NiagaraEmitters mkdir -p FX/Blueprints mkdir -p FX/Assets实际目录名可以根据你自己项目规范调整。关键是 NiagarSystem、Emitter、Material、Texture 分开存放。英雄联盟攻击特效通常会涉及几十个资产,如果不从一开始就分类,后面替换英雄特效时会非常痛苦。
3.4 准备用于特效的“假资产”
没有现成美术资源时,可以先用引擎默认资源代替:
- 刀光:用引擎自带的 Plane 或 Ribbon 即可,Ribbon 不需要模型,直接由粒子位置生成。
- 火花:默认圆形贴图 SoftSphere,或者引擎自带粒子专用的 T_Particle 系列贴图。
- 冲击波:可以用 Plane 模型,也可以用 NIagara 里的 Sprite 配合圆环贴图。
- 地面痕迹:使用 Cylinder 或 Plane 模型,调整缩放压扁后放在地面。
如果后续想要更接近端游效果,建议去市场中下载一些免费的 MG 特效纹理包、光效贴图包,或者使用 Blender 自己生成一圈环状渐变纹理。纹理的精度不需要太高,512×512 基本够用。
3.5 确认场景光照模式
攻击特效大多使用 Additive 混合方式,不发光的模型本身会在半透明混合模式下显得灰暗。制作时最好把粒子材质设成 Unlit(无光照)。同时,场景中需要有一个补充亮度用的环境光或定向光,否则特效在纯黑背景里看不出层次。建议创建一个简单的室内测试场景,背景使用中等灰度的纯色,不要使用天空盒光照泄漏,这样更容易观察特效的透明度与发光强度。
4. 创建 Niagara 攻击特效系统
这里开始进入实际制作环节。首先创建一个空的 Niagara 系统,用来管理多个发射器。
4.1 新建 Niagara 系统
- 在 Content Browser 中进入
FX/NiagaraSystems目录。 - 右键 -> FX -> Niagara System。
- 选择 “New system from a template”,模板选择 “Empty”。
- 命名为
NS_Attack_Slash_Hero。
空的 Niagara 系统打开后,最左侧是系统级参数,中间是发射器栈,右侧是预览视口。建议先在预览视口里把背景改为纯色,关闭网格显示,然后开始添加发射器。
4.2 发射器类型选择
Niagara 中发射器有两种常见类型:CPU 和 GPU。
| 发射器类型 | 适合场景 | 优点 | 缺点 |
|---|---|---|---|
| CPU | 数量少、逻辑复杂、需要碰撞检测 | 支持所有模块,方便调试 | 性能上限低 |
| GPU | 大量粒子、火花、拖尾、动态模糊 | 性能高,适合批量粒子 | 部分模块兼容性有限,调试不如 CPU 直观 |
对于攻击特效,建议把刀光拖尾做成 GPU 发射器,火花爆点也做成 GPU 发射器,而冲击波和地面痕迹这类粒子数量少的可以使用 CPU 发射器。这样既能保证特效密度,又不会拖累性能。
4.3 添加第一个发射器:刀光 Ribbon
右键系统面板,选择 “Add Emitter” -> “Empty”,然后重命名为E_Slash_Trail。
在发射器栈上,你会看到几个关键区域:Emitter Properties、Emission、Particle Spawn、Particle Update、Render。每一个模块在默认状态下可能是空的,需要手动添加。攻击特效里,最核心的模块包括:
- Emission:控制粒子生成方式。
- Initialize Particle:设置粒子初始化状态。
- Update Particle:每帧更新粒子属性。
- Ribbon Renderer:渲染条带。
- Color / Scale / Position 模块:控制外观动态。
先给发射器添加 Ribbon Renderer,这是制作刀光的关键。Ribbon 通过按顺序连接发射器里的粒子,生成一条带状网格。粒子的间隔越小,条带越平滑;粒子生命周期结束或移动到远离发射器时,条带会断开。
为了让刀光跟随武器挥动,需要把刀光粒子的位置绑定到骨骼或插槽上。最简单的做法是让 Niagara 的粒子使用 “Particles Position” 模块,并在蓝图里每帧更新粒子位置。这部分会在后面“蓝图触发与同步”章节展开。现在先在发射器栈中添加以下模块:
| 模块 | 作用 | 建议参数 |
|---|---|---|
| Spawn Burst Instantaneous | 每次攻击触发瞬间生成一批粒子 | Spawn Count = 30 |
| Initialize Particle | 初始化粒子位置、速度、生命周期 | Lifetime = 0.3 ~ 0.5s |
| Scale Sprite Size / Scale Ribbon Size | 控制条带宽度变化 | 初始 10,结束 0 |
| Color | 控制条带颜色随生命周期变化 | 淡黄色 -> 白色 -> 透明 |
| Ribbon Renderer | 渲染条带 | Face Camera 开启,Tessellation 按距离 |
注意:如果你使用的 Ribbon Renderer,发射器的 Renderer 类型必须是 Ribbon Renderer,不能在 Sprite Renderer 上直接切换。一个发射器只能有一个激活的 Renderer。
4.4 创建刀光材质
刀光 Ribbon 需要一个半透明、发光的材质。在FX/Materials目录新建材质M_Attack_Slash。
材质属性设置:
| 属性 | 值 |
|---|---|
| Blend Mode | Additive |
| Shading Model | Unlit |
| Two Sided | 开启 |
| 使用发光通道 | 可以开启,但不强制 |
材质节点中,把贴图采样连接到不透明度和自发光颜色。为了让刀光有拉扯感,可以在 UV 上叠加一个 Vector2D 的扭曲值,或者使用 Sine 函数微调透明度。最简单的验证方式是先用纯白贴图,颜色从黄色到红色过渡。
材质编辑器里的节点连接参考:
Texture Sample (T_Particle_Flare) -> Multiply -> Emissive Color Constant (1.0) -> Multiply -> Opacity Vertex Color -> Multiply -> Emissive Color / Opacity这里 Vertex Color 由 Niagara 粒子颜色带入,这样同一个材质可以驱动不同英雄的刀光颜色,不需要每次新建材质。使用 Vertex Color 就能在 Niagara 系统中调整粒子颜色,然后表现为刀光颜色。
5. 刀光拖尾特效制作
刀光是攻击特效的主体,下面详细说明如何让 Ribbon 拖尾随着武器挥动产生弧形效果。
5.1 生成粒子与绑定位置
攻击发生时,武器会从起点快速挥到终点。如果只是让 Ribbon 粒子发射后保持静止,条带就会是一条直带,不会出现弧形。要得到弧形刀光,需要让粒子跟随武器骨骼移动。
在 Niagara 中使用 “Initialize Particle” 模块来设置初始位置。建议添加一个 “User” 系统参数叫做WeaponTipPosition,然后在蓝图里每帧把这个位置从武器插槽传递到 Niagara 系统。
Niagara 参数绑定方式:
- 在系统面板添加 User Parameter,类型为 Vector。
- 名称命名为
User.WeaponTipPosition。 - 在刀光发射器中,在 Initialize Particle 的位置表达式里选择
User.WeaponTipPosition。
然后每个粒子的位置继承这个动态参数。如果每一帧都更新这个位置,Ribbon 就会形成连续的拖尾。
5.2 让刀光有弧度和宽度变化
有了基础拖尾后,可以通过以下模块优化:
- 添加
Noise (Curl Noise)模块到 Particle Update,让刀光边缘产生微小波动。 - 添加
Scale Curve到 Particle Update,让刀光的宽度在生命周期从宽到窄,形成锐利收尾。 - 添加
Color Over Life,让刀光从亮白渐变到半透明,再渐隐为橙色,增强消耗感。 - 调整 Ribbon Renderer 的
Tessellation参数,开启按距离细分,避免刀光出现锯齿。
一个比较实用的参数组合如下:
| 参数 | 建议值 | 说明 |
|---|---|---|
| Lifetime | 0.25 ~ 0.4s | 太长会拖出残影,太短则看不清轨迹 |
| Ribbon 顶点数 | 16 ~ 32 | 太少不圆润,太多会消耗性能 |
| 粒子速度 | 0 | 位置由外部绑定,不需要自身速度 |
| Curl Noise Strength | 40 ~ 80 | 数值太大会导致刀光像麻绳,不推荐 |
| Ribbon Width | 初始 15,结束 0 | 形成渐变刀锋感 |
| 透明度 | 初始 0.9,结束 0 | 避免硬切导致闪白 |
5.3 刀光的基础验证
调整完成后,先在预览视口中测试:点击 “Preview” 菜单中的 “Loop” 循环播放,观察刀光是否在武器移动路径上产生平滑条带。如果不出条带,先检查 emit 和 spawn 是否被触发;如果条带不完整,检查 Ribbon Renderer 的 “Ribbon 连接模式”,建议改为 “Custom Ribbon Connectivity”。
刀光的颜色可以先统一用白黄渐变,后续通过材质里的 Vertex Color 调整成各英雄风格。这一步做完,你的攻击特效已经具备 60% 的识别度。
6. 命中爆点与冲击波特效
攻击命中时,刀光需要配上一个短暂而猛烈的爆发效果,才能让玩家感受到打击顿挫感。这个部分建议单独使用一个 GPU 发射器。
6.1 创建火花爆点发射器
新增加一个发射器E_Impact_Spark,按照以下模块配置:
| 模块 | 建议配置 |
|---|---|
| Spawn Burst Instantaneous | Spawn Count = 50 |
| Initialize Particle | Position = 0,Lifetime = 0.3 ~ 0.6s |
| Initialize Particle | Random Position 范围 ±5 |
| Add Velocity | 在初速度方向随机扩散,速率 200~800 |
| Drag | 阻尼系数 1.5,让粒子快速减速 |
| Gravity Force | 关闭或设小值,用于火花表现 |
| Color Over Life | 从白到黄到橙到透明 |
| Scale Sprite Size | 初始 8,结束 0 |
| Sprite Renderer | 使用 Additive Blend,Face Camera 开启 |
火花爆点的核心是“快速出现、快速消失、亮度高”。如果粒子数量太少,爆发感不足;如果太多,镜头下会糊成一团。50 个粒子、生命周期 0.4 秒、初始半径 8,在普通分辨率的第三人称视角下效果比较适中。如果你的场景相机距离角色更近,相应要减少大小。
6.2 添加冲击波环
冲击波环可以用另一个 Sprite 发射器或平面模型实现。推荐使用 Sprite 发射器并使用圆环贴图。
创建E_Impact_Shockwave发射器:
- Spawn Burst 为 1 个粒子。
- 位置在命中点,向上偏移 10 单位防止穿模。
- 粒子生命周期设为 0.5 秒。
- Particle Update 中增加
Scale Sprite Size,从 0 到 500,使用Exponential或Linear曲线。 - 透明度随生命周期从 0.8 降到 0。
- 渲染使用 Additive Blend。
如果希望冲击波贴地面,可以把粒子位置的 Z 轴压平,例如在 Update 模块中约束 Z = 0,并将 Sprite 朝向改为 “Horizontal” 模式。在 Niagara 中,Sprite Renderer 有 “Alignment” 选项,选择 “Horizontal” 后粒子正面朝上,适合放在地面上。
6.3 命中位置如何传入
冲击波和火花爆点都需要知道攻击命中位置。最简单的做法是使用射线检测:
- 在角色武器攻击的动画通知中,从武器插槽向前发射一条射线。
- 若射线打到敌人或地面,记录 Hits 的第一个点的位置。
- 把该位置传递给 Niagara 系统参数,例如
User.ImpactPoint。 - 调用 Niagara 系统的
SpawnSystemAtLocation或激活相应发射器。
这部分逻辑放到第 8 章“蓝图触发与同步”里详细说明。现在先把整个特效系统的工作方式理解清楚:刀光绑定武器位置,火花和冲击波绑定命中点,两者通过同一套蓝图触发。
7. 材质与光照优化
攻击特效在多数情况下使用自发光材质,光照的影响可以忽略。但我们仍然需要处理好透明排序、亮度控制、材质编译这三个问题。
7.1 发光材质的核心设置
草草制作的发光材质常常出现整个刀光过曝或发灰发黄的问题。推荐材质配置如下:
| 材质属性 | 建议值 |
|---|---|
| Blend Mode | Additive |
| Shading Model | Unlit |
| Opacity Mask 不需要 | 半透明即可 |
| 材质域 | Surface |
| 可接收雾 | 关闭,减少距离雾干扰 |
| 使用深度偏移 | 按需开启,避免穿插闪烁 |
7.2 颜色驱动
不要在材质里写死颜色。使用 VertexColor 作为主要驱动。Niagara 的粒子颜色传到材质后,你可以使用一个ScalarParameter控制整体亮度,再使用另一个参数控制颜色强度。例如:
Texture Sample -> Multiply -> VertexColor VertexColor.A -> Multiply -> Opacity Constant3 (Color) -> Multiply -> Emissive Color FinalMultiplier -> Multiply -> Emissive Color这套材质的优点是同一个材质可以复用到所有攻击特效中,只要在 Niagara 发射器里修改粒子颜色,就能变成冰蓝色、火焰红或者是草绿色,不需要为了换颜色而重新制作材质。
7.3 避免全屏过亮
很多新手做发光特效时,习惯把 Emissive 强度调到 20 甚至更高,结果特效在场景中像是爆炸白洞。推荐正常状态下的 HDR 强度在 3~8 之间,命中瞬间可以短暂调到 12 左右。材质上可以用一个Constant节点控制基础强度,后续再通过 Material Parameter Collection 或 Niagara User Parameter 动态拉高。
7.4 半透明排序
如果场景中同时存在刀光、火花、冲击波,需要合理设置渲染顺序。Niagara 中可以通过发射器的渲染优先级调节。习惯上,刀光放在最底层,火花次之,冲击波和光晕最上层。如果出现透明排序异常,表现为粒子被后面物体遮挡或闪烁,可以在发射器栈的 Render 部分调整Sort Priority,或者改用Translucency Pass延迟渲染。最简单的方法是保证每个发射器使用独立的半透明材质,不要共用同一个材质实例却使用不同混合模式。
8. 蓝图触发与动画同步
特效做出来后,最终要由角色对局逻辑触发。这里只讲最简单通用的做法:用 AnimNotify 触发 Niagara。
8.1 在动画资产中添加 AnimNotify
打开攻击动画资产,在时间轴上找到武器挥到中间位置的关键帧,右键添加 AnimNotify,命名为AN_AttackSlash。然后在 AnimNotify 里添加事件调用。
具体思路:
- 获取角色 Mesh 上的武器插槽位置。
- 在插槽处生成 Niagara System 刀光。
- 武器挥到指定位置后触发命中检测。
- 在命中点生成火花与冲击波。
8.2 蓝图节点逻辑示例
以下是一种参考实现:
// 伪代码,实际请按节点图连线 Event: AnimNotify_AttackSlash -> Mesh -> Get Socket Location ("WeaponSocket") -> Get Actor Rotation -> Spawn Niagara System (NS_Attack_Slash_Hero) -> Attach Niagara Component to Mesh (WeaponSocket) // 使用 LineTraceByChannel 检测攻击范围 -> Start Location = WeaponSocket World Location -> End Location = Start + Character Forward Vector * 200 -> LineTraceByChannel -> Hit Return Value: 命中位置 -> Spawn Niagara System (NS_Impact_Hero) at Hit Location -> Play Sound / Gameplay Cue实际工程中,攻击判断可以使用动画通知状态机、GameplayAbility 或 Collision 检测。这里给出的是最小可运行逻辑:一条射线、一个生成特效、一个音效播放。
8.3 让刀光跟随武器移动
如果刀光只是生成一次,不跟随武器,那 Ribbon 就会固定在一个位置,无法形成挥动轨迹。解决办法有两种:
- 把 Niagara 组件 Attach 到武器骨骼插槽,并将发射器的位置更新模式设为“跟随组件”。
- 或者每帧从蓝图获取武器位置,写入 Niagara User Parameter,粒子位置实时跟随。
推荐使用 User Parameter 方式,因为独立于引擎的物理模拟,调试更方便,且不会受骨骼插槽匹配影响。比如在角色蓝图 Tick 中,每帧更新武器插槽的位置:
Event Tick -> Mesh -> Get Socket Location ("WeaponSocket") -> Set Niagara Variable (User.WeaponTipPosition) on Niagara Component注意:刀光发射器的粒子位置要使用User.WeaponTipPosition,这样粒子才会根据你传入的新位置依次生成拖尾。如果把粒子位置绑定到Particles.InitialPosition之类的旧参数,更新逻辑可能失效。
8.4 触发时机调整
实战中,刀光应与攻击前摇错开一点。英雄联盟近战攻击的流程是“起手 -> 前摇 -> 挥舞 -> 命中 -> 后摇”。建议把生成刀光的 AnimNotify 放在“挥舞”开始的地方,把命中爆点放在“挥舞”结束的地方,两者间隔约 0.08~0.15 秒。这样视觉上有“先出刀、再爆点”的层次感。如果你直接把刀光和命中爆点放在同一帧生成,玩家会感觉攻击缺少停顿和节奏感。
9. 性能优化与常见问题
攻击特效虽然单个粒子的数量不多,但多个英雄在同一场景中同时释放技能时,性能问题会被放大。下面给出几个优化建议和常见问题排查表。
9.1 性能优化清单
- 粒子数量控制:单次刀光粒子不超过 30 个,火花不超过 80 个,冲击波 1~2 个。如果英雄是远程法师,火花可以适量增加,但不要超过 150。
- 生命周期控制:攻击特效整体生命周期建议在 0.5~0.8 秒内结束,避免特效残留干扰玩家视野。
- 使用 GPU 发射器:大量粒子时优先使用 GPU 发射器,CPU 发射器在粒子数超过 200 后性能下降明显。
- 使用 Actor Pooling:如果英雄短时间内频繁攻击,建议循环使用 Niagara Component,而不是每次攻击都 New Actor 再销毁。Niagara 系统本身支持循环,合理控制系统重新激活即可。
- 关闭不需要的碰撞:火花粒子如果有
Collision模块会大量消耗性能,除非需要火花弹到地面反弹,否则直接关闭。 - 减少后处理影响:设置粒子材质不读取场景深度,或使用无光照材质,可以有效降低半透明填充过量带来的卡顿。
9.2 控制台视角观察粒子性能
在编辑器预览中,可以通过控制台命令查看粒子数量:
# 开启 Niagara GPU 调试 r.Niagara.GpuComputeDebug 1 # 查看粒子统计 stat Niagara # 查看场景整体性能 stat GPUstat Niagara是排查“为什么特效卡”的最直接手段,能够看到总粒子数、每个发射器的粒子数以及渲染耗时。如果“Niagara - Total”过高,优先降低粒子数量,而不是盲目降低画面质量。
9.3 常见问题排查
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 刀光不显示 | 发射器没有生成粒子,或材质不可见 | 检查 Spawn Count、Material Blend Mode | 给发射器加 Spawn Burst,材质改为 Additive |
| 刀光是直线,没有弧度 | 粒子位置没有跟随武器移动 | 查看 User.WeaponTipPosition 是否实时更新 | 在角色 Tick 中更新武器位置参数 |
| 刀光断裂成一段一段 | Ribbon 连接属性问题 | 检查 Ribbon Renderer 使用方式 | 切换为 Custom Ribbon Connectivity 或调整崩断距离 |
| 火花爆点太糊 | 粒子尺寸太大或贴图对比度低 | 缩小 Scale,使用中心亮边缘淡的贴图 | 换 T_Particle_Flare 类贴图 |
| 冲击波穿模进地面 | Z 轴高度未处理 | 检查粒子位置与旋转 | 将位置 Z 固定为地面高度,调整 Sprite Alignment |
| 特效排序闪烁 | 多个透明发射器重叠 | 查看渲染顺序与排序优先级 | 调整 Sort Priority,开启深度偏移 |
| 材质整体过曝 | Emissive 强度过高 | 检查材质亮度节点 | 强度改为 3~8,命中瞬间再局部提亮 |
| 攻击未命中但特效已爆 | 射线检测时机或距离错误 | Debug 射线,确认 Hit 结果 | 调整攻击范围与射线长度 |
9.4 避免版本不一致踩坑
UE4 的 Niagara 与 UE5 的 Niagara 在部分模块名称上有差别。如果你打开工程后找不到某些模块,先确认是哪个版本的引擎,再按对应版本的模块名称搜索。建议不要打开两个不同大版本的项目来回切,材质编译时间和 Niagara 兼容性都可能出问题。
10. 总结与下一步
这套英雄联盟攻击特效的 Niagara 流程并不复杂,核心是把特效拆成刀光、火花、冲击波、材质和蓝图触发五个部分。最先要验证的不是最终效果,而是刀光 Ribbon 是否跟随人物武器移动。只要这一步跑通,后面叠加火花和冲击波只是时间问题。
如果你打算把这个流程用到自己的游戏里,建议先从一个简单的球状模型测试开始,用纯白材质把刀光形状调满意,再换正式美术资源。最容易踩的坑有两个:一是 Niagara 发射器选错了 Renderer 类型,二是忘记在蓝图里实时更新武器位置。把这两个点处理好,整个特效完成度会明显提升。
下一步可以继续扩展的方向:加入 Material Parameter Collection 实现全屏幕闪白反馈;加入 Niagara 的 Audio 模块让粒子命中时驱动音效;把系统参数暴露给数据驱动资产,这样不同英雄的攻击特效只需要换颜色和贴图,不需要再复制整套蓝图。只要掌握了这种“发射器分层 + 参数驱动”的思路,英雄联盟风格的攻击特效就可以快速迁移到几乎所有近战技能里。