Skip to content

Lifetime and Speed Modules

The shield project combining color, size, and shader-driven motion

Lifetime and speed modules are most useful in combination: the shield layers several emitters whose size, color, and motion evolve together.

Lifetime modules sample with normalized particle age. Speed modules first map current speed through a configured range. They multiply or add to the start values instead of replacing the whole particle state blindly.

Module Reference

ModuleInputEffect
Color over Lifetimenormalized ageMultiply particle color/alpha by a gradient or color function.
Size over Lifetimenormalized ageScale X/Y/Z size.
Rotation over Lifetimenormalized ageAdd roll, pitch, and yaw.
Velocity over Lifetimenormalized ageAdd linear/orbital/radial velocity and speed modification.
Force over Lifetimenormalized ageIntegrate acceleration into velocity.
Color by Speedremapped speedMultiply color according to movement speed.
Size by Speedremapped speedScale size according to speed.
Rotation by Speedremapped speedAdd rotation according to speed.
Lifetime by Emitter Speedemitter speedAdjust lifetime assigned at spawn.

Enable Is a Runtime Value

Animatable module enables since 2.2.0

Toggle modules expose their enable state through the emitter runtime. Timeline animation can therefore turn a module on and off without rewriting authored config.

Speed Range

By Speed modules remap the configured minimum and maximum to 0..1 before sampling their function. Keep the range representative of real particle velocity; a range far above actual speed makes the function remain near its first key.

Value Space

Vector-producing modules may expose ValueSpace. This controls whether axes are interpreted in local, world, or another supported basis. It does not change the emitter's Particle Simulation Space.

Combining Modules

Start Color × Color over Lifetime × Color by Speed produces the effective particle color before material logic. Size follows an equivalent pattern. Rotation and motion modules accumulate contributions.

When debugging:

  1. Set the start value to a simple constant.
  2. Enable one module.
  3. Use a visible linear curve from zero to one.
  4. Add the second module only after confirming the first input range.

Released under the MIT License.