Quantcast
Channel: Kodeco | High quality programming tutorials: iOS, Android, Swift, Kotlin, Unity, and more
Viewing all articles
Browse latest Browse all 4370

Unreal Engine 4 Particle Systems Tutorial

$
0
0

Unreal Engine 4 Particle Systems Tutorial

Particle systems are a key component to visual effects. They allow artists to easily create effects such as explosions, smoke and rain.

Unreal Engine 4 has a robust and easy-to-use system to create particle effects called Cascade. This system allows you to create modular effects and easily control particle behaviour.

In this tutorial, you will learn how to:

  • Create a particle system
  • Set the velocity and size of a particle
  • Adjust the particle spawn rate
  • Scale the particle’s size over its lifetime using curves
  • Set the particle color using Cascade
  • Activate and deactivate a particle system using Blueprints
  • Set particle colors using Blueprints
Note: This tutorial is part of an 8-part tutorial series on Unreal Engine:

Getting Started

Download the starter project and unzip it. Navigate to the project folder and open SpaceshipBattle.uproject.

Press Play to start the game. Hold left-click to shoot and use W, A, S and D to move around.

Unreal Engine 4 Particle Systems Tutorial

In this tutorial, you will create two particle effects. One for the ship’s thrusters and one for when a ship explodes. To create these, you will use particle systems.

What is a Particle System?

As its name suggests, a particle system is a system to create and manage particles. A particle is basically a point in space. Using particle systems, you can control the appearance and behaviour of the particle.

Particle systems consist of one or more components called emitters. These are responsible for spawning particles.

Unreal Engine 4 Particle Systems Tutorial

Emitters also have components called modules. Modules control specific properties of the particles spawned by the emitter. For example, the material and initial velocity of a particle. In the example below, two modules are used to give each particle a red circle material and random velocity.

Unreal Engine 4 Particle Systems Tutorial

You can also change a particle’s color over its lifetime. In this example, the particle’s color changes from red to blue:

Unreal Engine 4 Particle Systems Tutorial

Now that you know what a particle system is, it’s time to create one for the ship’s thrusters.

Creating a Particle System

Navigate to the ParticleSystems folder and click Add New\Particle System. Rename the particle system to PS_Thruster and then open it.

Cascade: The Particle System Editor

Cascade is composed of four main panels:

Unreal Engine 4 Particle Systems Tutorial

  1. Viewport: This panel will display a preview of your particle system. You can look around by holding right-click and moving your mouse. To move, hold right-click and use the WASD keys.
  2. Details: Any component (emitters, modules etc.) you select will have its properties displayed here. If nothing is selected, it will display the properties for the particle system.
  3. Emitters: This panel will show a list of emitters from left to right. Each emitter displays a list of its modules.
  4. Curve Editor: The Curve Editor allows you to visualize and adjust the values of a module’s curves. Not all module properties support curves.

Right now, the particle system is using the default particle material.

Unreal Engine 4 Particle Systems Tutorial

To start, you will replace the particle material with a circle material.

Applying a Material to Particles

Go to the Emitters panel and select the Required module.

Unreal Engine 4 Particle Systems Tutorial

The Required module contains necessary properties such as particle material and emitter duration. Every emitter must have a Required module.

To change the material, go to the Details panel and set Material to M_Particle. This will change the particle’s appearance to an orange circle.

Unreal Engine 4 Particle Systems Tutorial

Next, you will attach the particle system to the player’s ship.

Attaching the Particle System

Go back to the main editor and navigate to the Blueprints folder. Open BP_Player and then go to the Components panel.

To use a particle system, you can use a Particle System component. Create one and rename it to ThrusterParticles. Make sure you attach it to the Collision component.

Unreal Engine 4 Particle Systems Tutorial

To specify a particle system, go to the Details panel and locate the Particles section. Set Template to PS_Thruster.

Next, set the Location of ThrusterParticles to (-80, 0, 0). This will place it behind the ship.

Unreal Engine 4 Particle Systems Tutorial

Finally, set the Rotation to (0, 90, 0). This will orient the particle system so that the particles move away from the ship.

Unreal Engine 4 Particle Systems Tutorial

Click Compile and then go back to the main editor. Press Play to see the particle system in effect.

Unreal Engine 4 Particle Systems Tutorial

The particle system is working but the particles move a bit too slowly and are very small. You can fix this by setting the particle’s initial velocity and size.

Setting a Particle’s Velocity and Size

First, you will set the initial velocity of the particles. Open PS_Thruster and then select the Initial Velocity module. Afterwards, expand Start Velocity\Distribution.

By default, a particle’s initial velocity will range from (-10, -10, 50) to (10, 10, 100).

Unreal Engine 4 Particle Systems Tutorial

To move the particles away from the ship at a faster speed, all you need to do is increase the Z velocity. Set Min Z to 300 and Max Z to 400.

Unreal Engine 4 Particle Systems Tutorial

Here is a comparison between the original and new velocities:

Unreal Engine 4 Particle Systems Tutorial

Next, you will set the initial size of the particles.

Setting the Particle’s Size

Select the Initial Size module and then go to the Details panel. Afterwards, expand Start Size\Distribution.

Like the Initial Velocity module, Initial Size also has a minimum and maximum range. However, for this tutorial, you will set the size to be a constant value. To do this, set Distribution to Distribution Vector Constant.

Unreal Engine 4 Particle Systems Tutorial

Note: Distributions allow you to specify values that are constant, within a range or on a curve. You can also set values using Blueprints. To learn more, head over to the Distributions page in the Unreal Engine documentation.

Afterwards, set Constant to (70, 70, 70). Here is a size comparison:

Unreal Engine 4 Particle Systems Tutorial

Go back to the main editor and press Play.

Unreal Engine 4 Particle Systems Tutorial

The particles are looking better but they’re still spaced quite far apart. This is because the duration between particle spawning is too large. To fix this, you can increase the spawn rate.

Increasing the Particle Spawn Rate

To increase the spawn rate, you need to use the Spawn module. This module controls how fast the emitter will spawn particles. Along with Required, every emitter must have a Spawn module.

Open PS_Thruster and then select Spawn. Go to the Details panel and then expand the Spawn\Rate section.

Unreal Engine 4 Particle Systems Tutorial

Set Constant to 50. This will increase the spawn rate to 50 particles per second.

Unreal Engine 4 Particle Systems Tutorial

Go back to the main editor and press Play.

Unreal Engine 4 Particle Systems Tutorial

As you can see, it now looks more like a trail. To make the particles look more like thruster flames, you can shrink them over time.

Shrinking the Particles Over Time

Open PS_Thruster and then go to the Emitters panel.

To shrink the particles, you can use a Size By Life module. This module will apply a multiplier to the particle’s size over its lifetime. Create one by right-clicking an empty space in the emitter and selecting Size\Size By Life.

Unreal Engine 4 Particle Systems Tutorial

By default, this will have no visual effect on the particle’s size. This is because the multiplier is always set to 1. To shrink the particle, you need to adjust the module’s curve so that the size multiplier decreases over time. But first, what is a curve?

What is a Curve?

A curve is a collection of points. Each point has two things: a position and a value.

When you have two or more points, you form a line. Below is an example of a basic linear curve. Point A has a position and value of 0. Point B has a position of 2 and value of 1.

Unreal Engine 4 Particle Systems Tutorial

If you sample a linear curve at any position, it functions like a linear interpolation. For example, if you sampled the curve above at position 1, you would receive a value of 0.5.

Unreal Engine 4 Particle Systems Tutorial

If you create a curve that declines, the value you receive will gradually get smaller. This is the type of curve you want to use for the Size By Life module.

Unreal Engine 4 Particle Systems Tutorial

Now, you will create the curve above within Cascade.

Modifying a Module’s Curve

Select Size By Life and then go to the Details panel. Afterwards, expand Life Multiplier\Distribution\Constant Curve\Points. Here, you will see a list of points for the Life Multiplier curve.

Unreal Engine 4 Particle Systems Tutorial

In Val is the point’s position on the curve. For Size By Life, a value of 0 indicates the beginning of a particle’s life. A value of 1 indicates the end of a particle’s life.

To decrease the size multiplier over time, you need to decrease the Out Val of the second point. Set Out Val of point 1 to (0, 0, 0). This will decrease the particle’s size towards 0 over time.

Unreal Engine 4 Particle Systems Tutorial

You can visualize the Life Multiplier curve using the Curve Editor. To do this, click the graph icon on the Size By Life module.

Unreal Engine 4 Particle Systems Tutorial

This will add Life Multiplier to the Curve Editor. To fit the curve into view, click Fit in the Curve Editor.

Unreal Engine 4 Particle Systems Tutorial

As you can see, the size multiplier decreases from 1 to 0 over the particle’s lifetime.

Unreal Engine 4 Particle Systems Tutorial

Go back to the main editor and press Play

Unreal Engine 4 Particle Systems Tutorial

The particles now look more like flames! The final thing you will add to this particle system is color variation.

Adding Color Variations

To set a particle’s color using Cascade, you need to set up the particle material correctly. Navigate to the Materials folder and open M_Particle.

Unreal Engine 4 Particle Systems Tutorial

Currently, the color is set in the material. To use a color from the particle system, you need to use a ParticleColor node.

First, delete the node connected to Emissive Color. Next, add a ParticleColor node and connect it like so:

Unreal Engine 4 Particle Systems Tutorial

Solution Inside: Optional SelectShow>

Click Apply and then close M_Particle.

To set the particle’s color, you can use the Initial Color module.

The Initial Color Module

Open PS_Thruster and then add an Initial Color module. You can find it under the Color category.

Unreal Engine 4 Particle Systems Tutorial

To add color variations, you need to specify a range the color can be in. To do this, you can use distributions.

Select Initial Color and then go to the Details panel. Expand the Start Color section and change Distribution to Distribution Vector Uniform. This will allow you to specify a range for each color channel.

Unreal Engine 4 Particle Systems Tutorial

For this tutorial, the color should range from orange to red. To do this, set Max to (1.0, 0.0, 0.0) and Min to (1.0, 0.35, 0.0).

Unreal Engine 4 Particle Systems Tutorial

If you look at the Viewport, you’ll notice the color behaving strangely.

Unreal Engine 4 Particle Systems Tutorial

This is because the Color Over Life module is constantly updating the color to white. To fix this, select Color Over Life and press Delete. Your module list should now look like this:

Unreal Engine 4 Particle Systems Tutorial

Close PS_Thruster and then press Play in the main editor. Look at those thruster flames!

Unreal Engine 4 Particle Systems Tutorial

Next, you will learn how to toggle the particle system, depending on if the ship is moving.

Toggling the Particle System

To check if the ship is moving, you can check if the player is pressing any movement keys.

Open BP_Player and locate the Event Tick node. Add the following set up to the end of the node chain:

Unreal Engine 4 Particle Systems Tutorial

Let’s run through what this set up does:

  1. This checks the MoveUp and MoveRight axis mappings. If both return 0, that means the player isn’t pressing any movement keys.
  2. If Branch returns true (player isn’t pressing any movement keys), deactivate ThrusterParticles
  3. If Branch returns false (player is pressing a movement key), activate ThrusterParticles

Click Compile and then close BP_Player. Press Play and switch between moving and not moving to see the toggle.

Unreal Engine 4 Particle Systems Tutorial

Now it’s time for the fun part: creating an explosion particle system!

Creating an Explosion Effect

Instead of creating a new particle system, you will duplicate the thruster particles. Navigate to the ParticleSystems folder, right-click on PS_Thruster and select Duplicate. Rename it to PS_Explosion and then open it.

For an explosion, all the particles should spawn at the same time instead of one by one. This is known as burst-emitting.

Unreal Engine 4 Particle Systems Tutorial

Creating a Burst

First, you will need to set the spawn rate to zero because you don’t want to use the default spawning behaviour. Select the Spawn module and set Spawn\Rate\Distribution\Constant to 0.

Unreal Engine 4 Particle Systems Tutorial

Next, you need to tell the emitter you want to create a burst. Scroll down to the Burst section and add a new entry to the Burst List. You can do this by clicking the + icon.

Unreal Engine 4 Particle Systems Tutorial

Each entry will contain three fields:

  1. Count: How many particles to spawn. Set this to 20.
  2. Count Low: If greater than or equal to 0, the amount of particles spawned will range from Count Low to Count. Leave this at -1.
  3. Time: When to spawn the particles. A value of 0 indicates the beginning of the emitter’s lifetime. A value of 1 indicates the end of the emitter’s lifetime. Leave this at 0.0.
Note: You can find the emitter’s duration in the Required module. It is listed as Emitter Duration under the Duration section.

Unreal Engine 4 Particle Systems Tutorial

This means the emitter will spawn 20 particles at the beginning of its life.

Unreal Engine 4 Particle Systems Tutorial

To make it look like an explosion, you need to set the velocity so that the particles move outwards.

Moving the Particles Outwards

Since this is a top-down game, you only need to specify the X and Y velocities. Select the Initial Velocity module and expand Start Velocity\Distribution. Set Max to (1000, 1000, 0) and Min to (-1000, -1000, 0).

Unreal Engine 4 Particle Systems Tutorial

By specifying a range that goes from negative to positive, the particles will move outwards from the emitter.

Unreal Engine 4 Particle Systems Tutorial

Next, you need to set the amount of times the emitter should loop.

Setting the Emitter Loops

By default, emitters will loop indefinitely. This is great for effects such as fire and smoke but a burst should only play once. To fix this, you need to tell the emitter to only loop once.

Select the Required module and then locate the Duration section. Set Emitter Loops to 1.

Unreal Engine 4 Particle Systems Tutorial

Now, it’s time to play the explosion when an enemy dies!

Spawning Particles on Enemy Death

Go back to the main editor and navigate to the Blueprints folder. Open BP_Enemy and then locate the OnDeath event.

To spawn a particle system, you can use a Spawn Emitter at Location node. Create one and connect it to Destroy Actor.

Unreal Engine 4 Particle Systems Tutorial

Next, set Emitter Template to PS_Explosion.

Unreal Engine 4 Particle Systems Tutorial

Finally, create a GetActorLocation and connect it to the Location pin.

Unreal Engine 4 Particle Systems Tutorial

Now, when an enemy dies, it will spawn an instance of PS_Explosion at the enemy’s location.

Click Compile and then go back to the main editor. Press Play and start shooting some baddies.

Unreal Engine 4 Particle Systems Tutorial

Look at all those explosions! Next, you’ll add some extra spice to them by making them the same color as the enemy.

Changing the Explosion Color to Enemy Color

To use the enemy’s color, you need a way to receive that information from Blueprints. Luckily, Cascade has a distribution type that allows for this.

Open PS_Explosion and select the Initial Color module. Set Start Color\Distribution to Distribution Vector Particle Parameter.

Unreal Engine 4 Particle Systems Tutorial

This will give you a parameter that you can set using Blueprints. Set the Parameter Name to PrimaryColor

Unreal Engine 4 Particle Systems Tutorial

For the explosion, you will use both of the enemy’s colors. To use the second color, you will need another emitter. Right-click an empty space on the emitter and select Emitter\Duplicate and Share Emitter. This will duplicate the emitter.

Unreal Engine 4 Particle Systems Tutorial

You’ll notice that each module now has a + sign next to it. By using Duplicate and Share Emitter instead of Duplicate, you have linked the modules instead of copying them. Any changes you make in one module will also happen in the same module of the other emitter. This is useful if you want to change properties across all emitters such as size.

The only module you will need to change is Initial Color. However, if you make a change, both emitters will receive the change. In this case, you do not want the modules to be linked as they need individual parameter names. The easiest way to unlink them is to delete the duplicated Initial Color module and create a new one.

Unreal Engine 4 Particle Systems Tutorial

Note: As of writing, there are no built-in methods to unlink modules.

Select the new Initial Color and set Start Color\Distribution to Distribution Vector Particle Parameter. Next, set Parameter Name to SecondaryColor.

Unreal Engine 4 Particle Systems Tutorial

At this point, the particle system is complete. Close PS_Explosion.

Next, you need to set the parameters using Blueprints.

Setting Particle Parameters Using Blueprints

Open BP_Enemy and then add the highlighted nodes after Spawn Emitter at Location:

Unreal Engine 4 Particle Systems Tutorial

This will allow you to set two parameters within PS_Explosion.

Now, you need to set the correct parameter names. Set Parameter Name for the first Set Color Parameter to PrimaryColor. Set Parameter Name for the second Set Color Parameter to SecondaryColor

Unreal Engine 4 Particle Systems Tutorial

Finally, you need to provide the colors. To make things easier, the colors have already been stored in the variables PrimaryColor and SecondaryColor. Connect each variable to their respective nodes like so:

Unreal Engine 4 Particle Systems Tutorial

Here is what you should end up with:

Unreal Engine 4 Particle Systems Tutorial

Let’s go over the order of events:

  1. When an enemy dies, it will spawn an instance of PS_Explosion at its location
  2. The PrimaryColor parameter of PS_Explosion will be set
  3. The SecondaryColor parameter of PS_Explosion will be set

Click Compile and then close BP_Enemy. Press Play and start shooting enemies to see the particle mayhem!

Unreal Engine 4 Particle Systems Tutorial

Look at all those juicy particles. See if you can add an explosion when the player dies!

Solution Inside: Solution inside! SelectShow>

Where to Go From Here?

You can download the completed project here.

Would you believe that you’ve barely scratched the surface of Cascade? You’ve created some neat effects but there are still a lot more modules for you to try out. I would recommend learning more about TypeData modules. Using them, you can create effects such as trails for sword slashes, lightning and even raining cows!

If there’s a topic you’d like me to cover, let me know in the comments below!

The post Unreal Engine 4 Particle Systems Tutorial appeared first on Ray Wenderlich.


Viewing all articles
Browse latest Browse all 4370

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>