跳到主内容
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++ 控制风向吗?🔥🌬️

返回顶部