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
Particle lifetime and speed
📖 Scenario: You are creating a simple particle effect in Unity. Each particle has a lifetime and a speed. You want to control these properties using code.
🎯 Goal: Build a Unity script that sets up particles with specific lifetimes and speeds, then prints their properties.
📋 What You'll Learn
Create a list of particles with given lifetimes and speeds
Add a speed threshold variable
Filter particles that have speed greater than the threshold
Print the filtered particles' lifetimes and speeds
💡 Why This Matters
🌍 Real World
Controlling particle effects in games or simulations to create visual effects like fire, smoke, or magic.
💼 Career
Understanding how to manage particle properties programmatically is useful for game developers and graphics programmers.
Progress0 / 4 steps
1
Create the initial particle list
Create a list called particles that contains these exact particle data as tuples: (2.5f, 5f), (3f, 7f), (1.5f, 4f), (4f, 6f). Each tuple represents (lifetime, speed).
Unity
Hint
Use List<(float, float)> and initialize with the exact tuples.
2
Add a speed threshold variable
Add a float variable called speedThreshold and set it to 5.5f inside the Start() method, below the particles list.
Create a new list called fastParticles that contains only the particles from particles where the speed is greater than speedThreshold. Use a foreach loop with variables lifetime and speed to iterate over particles.
Unity
Hint
Use a foreach loop with var (lifetime, speed) and an if to filter.
4
Print filtered particles
Use a foreach loop with variables lifetime and speed to iterate over fastParticles and print each particle's lifetime and speed in this exact format: "Particle - Lifetime: {lifetime}, Speed: {speed}" using Debug.Log.
Unity
Hint
Use Debug.Log($"Particle - Lifetime: {lifetime}, Speed: {speed}") inside a foreach loop over fastParticles.
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
Step 1: Understand the meaning of startLifetime
The startLifetime property sets the duration each particle exists after being emitted.
Step 2: Compare with other properties
Speed controls movement, color controls appearance, size controls scale. Only lifetime controls duration.
Final Answer:
How long each particle stays alive before disappearing -> Option A
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
Step 1: Recall ParticleSystem API structure
In Unity, startSpeed is inside the main module, accessed as particleSystem.main.startSpeed.
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.
Final Answer:
particleSystem.main.startSpeed = 5f; -> Option D
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
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.
Step 2: Check Debug.Log output format
Logging floats with string concatenation prints "2, 3" because ToString() on whole number floats omits the decimal.
Final Answer:
2, 3 -> Option C
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
Step 1: Understand ParticleSystem property access
In Unity, startLifetime is inside the main module, so it cannot be set directly on ps.
Step 2: Identify correct way to set lifetime
Correct syntax is var main = ps.main; main.startLifetime = 4f;. Direct assignment causes error.
Final Answer:
startLifetime must be set via the main module, not directly -> Option A
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
Step 1: Set particle lifetime correctly
Particles should live 3 seconds, so startLifetime = 3f is correct.
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.
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.
Final Answer:
Set startLifetime = 3f and use velocityOverLifetime module to increase speed from 2 to 6 -> Option B
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