Documentation
AddVelocity.md
2025/12/16预计阅读 4 分钟
AI解释
提问: 奶瓜特效, add velocity 这个是干啥的?
“奶瓜特效”是中文玩家对 Niagara 特效系统(Niagara → “奶瓜”)的戏称。你问的 “Add Velocity” 是 Niagara 中一个非常重要的模块,它的作用是:
✅ Add Velocity(添加速度)—— 控制粒子的运动方向和速率
它的作用是:给粒子施加一个额外的速度向量(Vector),让它们朝某个方向移动。
这就像你在游戏中发射火焰、烟雾、水流、爆炸碎片时,粒子不能静止不动,而要“飞出去”,这就是由 Add Velocity 或类似模块驱动的。
🧩 举个例子:火墙 vs 火焰喷射器
| 特效类型 | 是否需要 Add Velocity |
|---|---|
| 🔥 静态火墙(Fire Wall) | ❌ 不一定需要,粒子可能只是上下跳动 |
| 💥 火焰喷射器(Flamethrower) | ✅ 必须!粒子要向前喷射 |
| 🌪️ 爆炸冲击波 | ✅ 让碎片向外扩散 |
| 🌫️ 雾气飘散 | ✅ 让烟雾缓慢漂移 |
🔍 在 Niagara 中哪里能看到 Add Velocity?
在 Niagara 编辑器中,你可以看到很多与运动相关的模块,常见的有:
1. Initial Velocity(初始速度)
- 在粒子出生时赋予一个速度。
- 比如:喷射类特效常用。
Module: Initial Velocity > Direction + Speed
→ 粒子一出生就以某个方向飞行
2. Add Velocity(持续添加速度)
- 每帧都给粒子加上一个速度增量(比如模拟风力、重力、推力)。
- 常用于:
- 风吹动烟雾
- 火焰向上飘
- 地心引力拉下碎片
每帧执行:Velocity += AddVelocityValue * DeltaTime
⚠️ 注意:这不是“设置速度”,而是“增加速度”——它是累加的!
🎮 实际应用场景举例
| 场景 | 如何使用 Add Velocity |
|---|---|
| 🌬️ 风中的火焰 | 使用 Add Velocity 向右持续加力,模拟风吹效果 |
| 🌋 喷发的岩浆 | 初始速度向上 + 持续重力向下(负Z方向 Add Velocity) |
| 💨 推进器尾焰 | 每帧给粒子一个反向(后方)速度增量,形成推力感 |
| 🌀 龙卷风 | 使用“Add Radial Velocity”或“Add Angular Velocity”绕中心旋转 |
🛠️ C++ 中能控制吗?可以!
你可以在 C++ 中动态修改 Niagara 的 Add Velocity 参数,比如改变风力大小:
// 假设你有一个 Niagara 组件
UNiagaraComponent* NC = nullptr;
// 比如这是火焰喷射器
NC = UNiagaraFunctionLibrary::SpawnSystemAttached(...);
// 动态设置一个叫 "WindSpeed" 的参数(你需要在 Niagara 中暴露这个变量)
NC->SetVariableVec3(TEXT("ExternalWind"), FVector(1000.0f, 0.0f, 0.0f));
然后在 Niagara 系统中,用这个参数来控制 Add Velocity 的值:
[Inside Niagara Graph]
Parameter Collection: ExternalWind → Connect to Add Velocity module
这样就能通过 C++ 实现“怪物进入区域后,火墙被风吹向它”这种动态效果!
📌 总结:Add Velocity 是干啥的?
| 项目 | 内容 |
|---|---|
| 🎯 作用 | 给粒子持续施加速度变化(加速) |
| 🔁 类型 | 是一个“每帧执行”的模块(不是一次性) |
| 🆚 对比 | 区别于 Set Velocity(直接设定速度) |
| 🧪 应用 | 风、重力、推力、水流、爆炸余波等物理模拟 |
| 🎮 游戏用途 | 让特效更生动、更具交互性(如风吹火势蔓延) |
💡 小贴士:
如果你做的是“火墙陷阱”,虽然主体火焰不移动,但你仍然可以用 Add Velocity (Z轴) 让火焰向上飘动,看起来更真实!
需要我教你如何在 Niagara 中创建一个「受风力影响的火墙」并用 C++ 控制风向吗?🔥🌬️