Bird
Raised Fist0
Unityframework~10 mins

Particle lifetime and speed in Unity - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Particle lifetime and speed
Start Particle System
Set Particle Speed
Set Particle Lifetime
Emit Particles
Particles Move
Particles Expire After Lifetime
End
This flow shows how particles are created with speed and lifetime, move accordingly, and then disappear after their lifetime ends.
Execution Sample
Unity
var ps = GetComponent<ParticleSystem>();
var main = ps.main;
main.startSpeed = 5f;
main.startLifetime = 3f;
ps.Emit(1);
This code sets particle speed to 5 units/sec, lifetime to 3 seconds, then emits one particle.
Execution Table
StepActionParticle SpeedParticle LifetimeParticle AgeParticle PositionParticle State
1Set startSpeed to 55---No particles yet
2Set startLifetime to 353--No particles yet
3Emit 1 particle530(0,0,0)Alive
4After 1 second531(5,0,0)Alive
5After 2 seconds532(10,0,0)Alive
6After 3 seconds533(15,0,0)Dead (expired)
7After 3.1 seconds533.1(15.5,0,0)Dead (expired)
💡 Particle expires after 3 seconds lifetime, so it is removed at step 6.
Variable Tracker
VariableStartAfter Step 3After Step 4After Step 5After Step 6After Step 7
Particle Speed-55555
Particle Lifetime-33333
Particle Age-01233.1
Particle Position (x)-05101515.5
Particle StateNo particlesAliveAliveAliveDeadDead
Key Moments - 3 Insights
Why does the particle disappear after 3 seconds?
Because the particle's lifetime is set to 3 seconds (see execution_table step 6), it expires and is removed after that time.
How does particle speed affect its position?
Particle speed determines how far it moves each second. At speed 5, after 1 second it moves 5 units (execution_table step 4).
What happens if we emit a particle but don't set lifetime?
The particle uses the default lifetime from the ParticleSystem. Without setting it explicitly, it may live longer or shorter depending on defaults.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the particle's position after 2 seconds?
A(5,0,0)
B(15,0,0)
C(10,0,0)
D(0,0,0)
💡 Hint
Check the 'Particle Position' column at step 5 in the execution_table.
At which step does the particle expire and become dead?
AStep 4
BStep 6
CStep 7
DStep 3
💡 Hint
Look at the 'Particle State' column in the execution_table for when it changes to 'Dead'.
If we change startSpeed to 10, what will be the particle's position after 1 second?
A(10,0,0)
B(5,0,0)
C(15,0,0)
D(0,0,0)
💡 Hint
Particle position after 1 second equals speed * time; see variable_tracker for position updates.
Concept Snapshot
Particle lifetime and speed in Unity:
- Use ParticleSystem.main.startSpeed to set speed.
- Use ParticleSystem.main.startLifetime to set how long particles live.
- Emit particles with Emit(count).
- Particles move at speed until lifetime expires, then disappear.
Full Transcript
This visual execution shows how Unity's ParticleSystem uses startSpeed and startLifetime to control particle behavior. First, speed and lifetime are set. Then a particle is emitted at position zero with age zero. Each second, the particle moves forward by speed units. After 3 seconds, the particle's age exceeds its lifetime and it is removed. The tables track speed, lifetime, age, position, and state step-by-step. Key moments clarify why particles disappear and how speed affects movement. Quizzes test understanding of position at times and expiration timing.

Practice

(1/5)
1. What does the startLifetime property of a ParticleSystem control in Unity?
easy
A. How long each particle stays alive before disappearing
B. The speed at which particles move when emitted
C. The color of the particles over time
D. The size of the particles when they spawn

Solution

  1. Step 1: Understand the meaning of startLifetime

    The startLifetime property sets the duration each particle exists after being emitted.
  2. Step 2: Compare with other properties

    Speed controls movement, color controls appearance, size controls scale. Only lifetime controls duration.
  3. Final Answer:

    How long each particle stays alive before disappearing -> Option A
  4. Quick Check:

    Particle lifetime = duration alive [OK]
Hint: Lifetime means how long particles live before vanishing [OK]
Common Mistakes:
  • Confusing lifetime with speed
  • Thinking lifetime affects color or size
  • Mixing up startLifetime with emission rate
2. Which of the following is the correct way to set the particle speed to 5 in a Unity ParticleSystem script?
easy
A. particleSystem.startSpeed = 5f;
B. particleSystem.speed = 5;
C. particleSystem.setSpeed(5);
D. particleSystem.main.startSpeed = 5f;

Solution

  1. Step 1: Recall ParticleSystem API structure

    In Unity, startSpeed is inside the main module, accessed as particleSystem.main.startSpeed.
  2. Step 2: Check syntax correctness

    Options A and B are incorrect because startSpeed is not a direct property of ParticleSystem. particleSystem.setSpeed(5); uses a non-existent method.
  3. Final Answer:

    particleSystem.main.startSpeed = 5f; -> Option D
  4. Quick Check:

    Use main module to set startSpeed [OK]
Hint: Use particleSystem.main.startSpeed to set speed [OK]
Common Mistakes:
  • Trying to set startSpeed directly on particleSystem
  • Using incorrect method names
  • Forgetting to use the main module
3. Consider this Unity C# code snippet:
var ps = GetComponent<ParticleSystem>();
var main = ps.main;
main.startLifetime = 2f;
main.startSpeed = 3f;
Debug.Log(main.startLifetime + ", " + main.startSpeed);
What will be printed in the console?
medium
A. 2.0, 3.0
B. 2f, 3f
C. 2, 3
D. Error: Cannot assign to startLifetime

Solution

  1. Step 1: Understand property types and output

    The startLifetime and startSpeed are floats. Assigning 2f and 3f sets them to 2.0 and 3.0 internally.
  2. Step 2: Check Debug.Log output format

    Logging floats with string concatenation prints "2, 3" because ToString() on whole number floats omits the decimal.
  3. Final Answer:

    2, 3 -> Option C
  4. Quick Check:

    Whole number floats print without decimals [OK]
Hint: Whole number floats print without decimal in Debug.Log [OK]
Common Mistakes:
  • Expecting decimal output like 2.0, 3.0
  • Thinking 'f' suffix prints in output
  • Assuming assignment causes error
4. This code tries to set particle lifetime but causes an error:
var ps = GetComponent<ParticleSystem>();
ps.startLifetime = 4f;
What is the main problem?
medium
A. startLifetime must be set via the main module, not directly
B. startLifetime is a read-only property
C. ParticleSystem component is missing
D. startLifetime requires integer value, not float

Solution

  1. Step 1: Understand ParticleSystem property access

    In Unity, startLifetime is inside the main module, so it cannot be set directly on ps.
  2. Step 2: Identify correct way to set lifetime

    Correct syntax is var main = ps.main; main.startLifetime = 4f;. Direct assignment causes error.
  3. Final Answer:

    startLifetime must be set via the main module, not directly -> Option A
  4. Quick Check:

    Use main module to set startLifetime [OK]
Hint: Always set startLifetime via particleSystem.main [OK]
Common Mistakes:
  • Trying to set startLifetime directly on ParticleSystem
  • Assuming startLifetime is read-only
  • Confusing missing component with syntax error
5. You want to create a particle effect where particles live for 3 seconds and move faster over time, starting at speed 2 and increasing to 6. Which approach correctly sets this behavior in Unity?
hard
A. Set startLifetime = 3f and set startSpeed = 6f only
B. Set startLifetime = 3f and use velocityOverLifetime module to increase speed from 2 to 6
C. Set startLifetime = 6f and startSpeed = 2f
D. Set startLifetime = 3f and change speed in Update() manually

Solution

  1. Step 1: Set particle lifetime correctly

    Particles should live 3 seconds, so startLifetime = 3f is correct.
  2. Step 2: Use velocityOverLifetime for speed change

    To increase speed over time from 2 to 6, use the velocityOverLifetime module with a curve, not just startSpeed.
  3. Step 3: Evaluate other options

    Set startLifetime = 3f and set startSpeed = 6f only sets constant speed 6, not increasing. Set startLifetime = 6f and startSpeed = 2f has wrong lifetime. Set startLifetime = 3f and change speed in Update() manually is inefficient and unnecessary.
  4. Final Answer:

    Set startLifetime = 3f and use velocityOverLifetime module to increase speed from 2 to 6 -> Option B
  5. Quick Check:

    Use velocityOverLifetime for speed changes over time [OK]
Hint: Use velocityOverLifetime to change speed during particle life [OK]
Common Mistakes:
  • Setting only startSpeed for changing speed over time
  • Confusing lifetime and speed values
  • Trying to update speed manually every frame