Particle Emitters

A ParticleEmitter is an object that emits customizable 2D images (particles) into the world, useful for simulating special effects like fire, smoke, and sparks.

Creating a Particle Emitter

You can parent a ParticleEmitter to an Attachment or an object of the BasePart class. When parented to a BasePart, particles spawn randomly within the part's bounding box or shape; when parented to an Attachment, particles spawn from the attachment's position.

Additionally, the EmissionDirection property determines the face (Enum.NormalId) of emission when the emitter is parented to a BasePart. When you change this property, you consequently change the particle emission direction as well.

To create a particle emitter on a given BasePart or Attachment:

  1. In the Explorer window, hover over the part or attachment and click the ⊕ button. A contextual menu displays.

  2. From the menu, insert a ParticleEmitter. The particle emitter immediately emits particles within the part's area or from the attachment's position.

    ParticleEmitter object as child of MeshPart in Explorer hierarchy

Customizing Particles

By experimenting with the following properties, you can customize a particle's visual appearance to make unique gameplay elements like bursting volcanos, magical dust, and dust motes.

Texture

The Texture property renders the image that each particle displays. By default, particle emitters have particles with a white sparkle texture, but you can change it to any texture to achieve interesting effects.

Three similar particle emitters with different Texture assets

If you're creating an image to use as a particle texture, it's best to use .png format with a transparent background. If your texture is grayscale with no alpha channel, try setting the particle emitter's LightEmission property to 1 to hide the darker regions.

To insert an image into a particle emitter:

  1. In the menu bar, navigate to the Home tab and select Toolbox. The Toolbox window displays.

    Toolbox indicated in Home tab
  2. If you want to insert an image that you have previously imported, click the Inventory tab. If you want to insert an image from another creator, click the Creator Store tab.

    Inventory tab indicated in Studio's Toolbox Creator Store tab indicated in Studio's Toolbox
  3. Right-click on the image you want to insert into a particle emitter and select Copy Asset ID.

  4. In the Explorer window, select a ParticleEmitter.

  5. In the Properties window, paste the asset ID into the Texture property.

Color

The Color property tints each particle's texture to either a specific hue, or to a gradient ColorSequence across its lifetime.

  1. In the Explorer window, select the ParticleEmitter.

  2. In the Properties window, select the Color property. You can either:

    1. Click on the color square to open the Colors pop-up window and select a color.
    2. Input three numbers into the RGB color value field.
    Similar particle emitters with different colored particles
    Similar particle emitters with different colored particles

Size

The Size property sets the size of each particle to a consistent size, or to a NumberSequence across its lifetime.

  1. In the Explorer window, select the ParticleEmitter.
  2. In the Properties window, select the Size property.
  3. Input the size that you want each particle to be.

Transparency

The Transparency property sets the opacity of each particle as a consistent value, or as a NumberSequence opacity across its lifetime. Opacity can range from 0 (totally opaque) to 1 (fully clear). For details on how to set particles to either a specific opacity or to a number sequence, follow the process in customizing Size but use the emitter's Transparency property field instead.

Static transparency vs. fading in/out

Lifetime

The Lifetime property sets the lifetime of a particle in seconds. You can set this property either as a consistent value, or provide a Min and Max range from which a random lifetime will be chosen for each particle.

Speed

The Speed property determines a random range of velocities (minimum to maximum) at which new particles will emit, measured in studs per second. Each particle's velocity is chosen upon emission and it applies in the EmissionDirection. Negative values cause particles to travel in reverse.

Note that changing Speed does not affect active particles and they retain whatever speed they already have. However, Acceleration, Drag, and VelocityInheritance can be used to affect the speed of active particles over their lifetime.

Rate

The Rate property sets the number of particles that emit per second. A single particle emitter can create up to 500 particles per second. For best performance, keep the particle rate as low as possible and experiment with size and other properties to achieve the desired visual effect.

Orientation

The Orientation property determines which orientation mode to use for an emitter's particle geometry.

OrientationParticle Behavior
FacingCameraStandard camera-facing billboard quad; default behavior.
FacingCameraWorldUpFacing the camera, but rotating only on the vertical upward world Y axis.
VelocityParallelAligned parallel to their direction of movement.
VelocityPerpendicularAligned perpendicular to their direction movement.
Expected outcome of particle orientation

Light Emission

The LightEmission property determines the blending of particle Texture colors with the colors behind them. A value of 0 uses normal blending mode while a value of 1 uses additive blending. Higher values can make particles glow even in environments with low lighting.

Spread Angle

The SpreadAngle property has an X and a Y value which determine the range of angles from which a particle can emit. The range is calculated from both sides around the axes; for example, a value of (45, 0) emits particles in a range of 0° to 45° away from the EmissionDirection across the X axis.

Wind Influence

If you've enabled global wind in an experience, particles will follow the global wind vector as long as the emitter's WindAffectsDrag property is enabled and its Drag property is greater than 0.

Drag and WindAffectsDrag properties shown in Properties window of Studio

Shape

The Shape property sets the shape of the particle emitter to either a Box, Sphere, Cylinder, or Disc.

Emitter of Box shape
Box
Emitter of Sphere shape
Sphere
Emitter of Cylinder shape
Cylinder
Emitter of Disc shape
Disc

After you select a shape for your particle emitter, you can experiment with the ShapeStyle, ShapeInOut, and ShapePartial properties to further customize particle emission.

ShapeStyle

The ShapeStyle property sets the emission type to either:

  • Volume — Particles emit anywhere within the shape.
  • Surface — Particles only emit from the outside of the shape.
Emitter of Cylinder shape with Volume shape style
Cylinder + Volume
Emitter of Cylinder shape with Surface shape style
Cylinder + Surface

ShapeInOut

The ShapeInOut property sets the emission as follows:

  • Inward — Particles emit toward the shape.
  • Outward — Particles emit away from the shape.
  • InAndOut — Particles randomly behave as both Inward and Outward.

ShapePartial

The ShapePartial property is a factor you can use to further modify Cylinder, Disc, and Sphere shapes.

For cylinders, ShapePartial multiplies the radius of the cylinder on the side of its EmissionDirection.

Emitter of Cylinder shape with ShapePartial value of 0.5
ShapePartial = 0.5
Emitter of Cylinder shape with ShapePartial value of 0
ShapePartial = 0

Squash

The Squash property allows for non-uniform scaling of particles, curve-controlled over their lifetime. Values greater than 0 cause particles to both shrink horizontally and grow vertically, while values less than 0 cause particles to both grow horizontally and shrink vertically. For details on how to set the squash amount to either a constant or to a NumberSequence, follow the process in customizing Size but use the emitter's Squash property field instead.

Flipbooks

Particle flipbook textures let you animate a particle's texture over its lifetime.

To use particle flipbooks, the flipbook texture must be of pixel dimensions 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, or 1024×1024. If the texture isn't a square with one of these dimensions, you can't set flipbook's properties in the Properties window.

The flipbook texture can have a frame layout of 2×2, 4×4, or 8×8. For example, the following 1024×1024 image has an 8×8 layout, so it's suitable for a 64‑frame animation.

Sample texture for particle flipbooks

Once you've specified a valid flipbook texture for the emitter's Texture property, the FlipbookLayout property determines the layout of the texture. It can be any value of the Enum.ParticleFlipbookLayout enum:

  • None — Disable flipbook features and use the texture as a single static texture over the particle's lifetime.
  • Grid2x2 — 2×2 frames for a 4-frame animation.
  • Grid4x4 — 4×4 frames for a 16-frame animation.
  • Grid8x8 — 8×8 frames for a 64-frame animation.

To further customize the flipbook behavior, you can adjust the following properties:

The FlipbookFramerate property determines how fast the flipbook texture animates in frames per second. Like Lifetime, you can set a minimum and maximum range to randomize the framerate of the flip book, with a maximum of 30 frames per second.

Other Properties

To further customize particles, consider the following emitter properties, and click through to the ParticleEmitter reference page for more details.

The following appearance properties are in addition to color, light emission, orientation, size, texture, transparency, squash, and flipbooks.

PropertyDescription
LightInfluenceDetermines how much environmental light affects the color of individual particles.
BrightnessScales the light emitted from the emitter when LightInfluence is 0.
ZOffset Determines the forward-backward render position of particles, in studs, without changing their size on the screen. This allows for multiple emitters to be layered, or to render particles in front of or behind the parent object.