In a 3D game, most characters, props and scenery elements are represented as meshes, while a 2D game uses sprites for these purposes. Meshes and sprites are the ideal way to depict “solid” objects with a well-defined shape. There are other entities in games, however, that are fluid and intangible in nature and consequently difficult to portray using meshes or sprites. For effects like moving liquids, smoke, clouds, flames and magic spells, a different approach to graphics known as particle systems can be used to capture the inherent fluidity and energy.
Particles are small, simple images or meshes that are displayed and moved in great numbers by a particle system. Each particle represents a small portion of a fluid or amorphous entity and the effect of all the particles together creates the impression of the complete entity. Using a smoke cloud as an example, each particle would have a small smoke texture, possibly resembling a tiny cloud in its own right. When many of these mini-clouds are arranged together in an area of the scene, the overall effect is of a larger, volume-filling cloud.
Each particle has a predetermined lifetime, typically of a few seconds, during which it can undergo various changes. It begins its life when it is generated or emitted by its particle system. The system emits particles at random positions within a region of space shaped like a sphere, hemisphere, cone, box or any arbitrary mesh. The particle is displayed until its time is up, at which point it is removed from the system. The system’s emission rate indicates roughly how many particles are emitted per second, although the exact times of emission are randomized slightly. The choice of emission rate and average particle lifetime determine the number of particles in the “stable” state (ie, where emission and particle death are happening at the same rate) and how long the system takes to reach that state.
The emission and lifetime settings affect the overall behaviour of the system but the individual particles can also change over time. Each one has a velocity vector that determines the direction and distance the particle moves with each frame update. The velocity can be changed by forces and gravity applied by the system itself or when the particles are blown around by a wind zone on a Terrain. The color, size and rotation of each particle can also change over its lifetime or in proportion to its current speed of movement. The color includes an alpha (transparency) component, so a particle can be made to fade gradually in and out of existence rather than simply appearing and disappearing abruptly.
Used in combination, particle dynamics can be used to simulate many kinds of fluid effects quite convincingly. For example, a waterfall can be simulated by using a thin emission shape and letting the water particles simply fall under gravity, accelerating as they go. Smoke from a fire tends to rise, expand and eventually dissipate, so the system should use an upward force on the smoke particles and increase their size and transparency over their lifetimes.
Unity implements particle systems with a Component, so placing a system in a scene is a simple matter of adding a pre-made object (menu: component reference page.
) or adding the component to an existing object (menu: ). Since the component is quite complicated, the inspector is divided into a number of collapsible sub-sections that each contain a group of related properties. Additionally, you can edit one or more systems at the same time using a separate editor window accessed via the Open Window button on the inspector. The many options available for the Particle System component are described in detail on itsWhen an object with a particle system is selected, the scene view will contain a small Particle Effect panel with some simple controls that are useful for visualising changes you make to the system’s settings.
The Playback Speed allows you to speed up or slow down the particle simulation so you can quickly see how it will look at an advanced state. The Playback Time indicates the time elapsed since the system was started; this may be faster or slower than real time depending on the playback speed. The playback time can be “scrubbed” backwards and forwards by clicking on the Playback Time label and dragging the mouse left and right. The buttons at the top of the panel can be used to pause and resume the simulation or to stop it and reset to the initial state.
Many of the numeric properties of particles or even the whole system can be varied over time. Unity provides several different methods of specifying how the variation will happen:-
For color properties, such as Color over lifetime, there are two separate options:-