跳到主要内容
← 全部概念
游戏系统 / 23

粒子系统

一个发射器,许多短暂的生命

交互演示

交互演示 · 移动指针或点击画面,观察变化

粒子系统用一个发射器和少量参数生成许多短寿命的精灵:发射速率、寿命、发射方向的散布范围、速度、重力和阻力。每个粒子的大小和不透明度也会随自身生命周期变化。这里的火花、烟雾和彩纸屑使用相同的代码,只是参数不同。

适用场景

用一套发射器配置生成大量短寿命特效。将发射、模拟和渲染分开,让它们分别拥有自己的性能预算和质量设置。

实现示例

不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。

spawnBudget += emissionRate * dt
while spawnBudget >= 1:
  spawnFromPool()
  spawnBudget -= 1
for particle in active:
  particle.velocity += gravity * dt
  particle.position += particle.velocity * dt

常见错误

如果每个渲染帧都生成固定数量的粒子,粒子密度就会随帧率变化。还要限制存活粒子数量和透明图层的重叠程度;对象池无法解决过度绘制造成的瓶颈。

内容原作 Nicolas Zullo · 中文整理与交互改编