ImageLabel
An ImageLabel emitter makes flat particles on the screen: coins that fly to a counter, streaks at the screen edge, a spark over the HUD. It is made by transforming an ImageLabel, and each particle is a duplicate of the label. A particle moves in screen pixels, and it can turn, grow and fade over its life.
What it makes possible:
- Coins that fly into a HUD counter. Emit Into set to the counter’s Frame, a Speed graph that falls to 0, Reverse Motion on.
- Speed streaks from the centre of the screen. A thin image, Position
0.5, 0, 0.5, 0, SpreadAngle180, rising Speed and Size Scale X graphs, a Transparency graph of 1, 0, 1. - An animated hit spark from a sprite sheet. Source
Spritesheet, Grid4, 4, Play ModeOneShot, Lifetime0.4. - 2D particles that sit on a 3D object. Emit Into set to a BillboardGui above the object.
At a glance
Section titled “At a glance”| Made from | An ImageLabel |
| One particle is | One image on the screen |
| Emit count starts at | 1 |
| Modes | Emit and Animate |
| Sections | Emission, Appearance, Spawn, Motion, Flipbook, Events, Advanced |
| Not present | Link, Shape, Displacement, Turbulence, Orientation and Z-Offset. |
The Emit count starts at 1. A new ImageLabel emitter makes one picture at the first press of the Emit button.
Transform
Section titled “Transform”Transform hides the original label. A background that was fully opaque is made fully transparent. Any other background transparency is kept.
| Transform keeps | Transform does not keep |
|---|---|
| Image, Position, Size, AnchorPoint, ZIndex, ScaleType, ResampleMode | ImageColor3, ImageTransparency, Rotation, BackgroundColor3, and a crop rectangle |
The rows for what is not kept start at the plugin’s own values. A tinted or half-transparent label emits white and opaque until those rows are set.
The RenderTemplate keeps the label’s UI modifiers: corners, gradients, strokes, padding and constraints. Other children are removed from it, a TextLabel inside the image for one. Emitters placed inside the label are kept.
Transform adds an empty ImageFlipbooks folder to the emitter.
Every particle takes these from the rows of the Properties panel: Image, ScaleType, ResampleMode, AnchorPoint, ZIndex, Position, Size, rotation, colours and transparencies. Changing them on the RenderTemplate has no effect.
What the plugin has no row for comes from the RenderTemplate: the slice centre, the tile size, the UI modifiers, and children added to it later.
Where the particles are drawn
Section titled “Where the particles are drawn”The thing a particle is drawn in is its container. The first of these that applies decides it:
| Order | Case | The container |
|---|---|---|
| 1 | Advanced ▸ Emit Into is set | That instance. |
| 2 | The emitter sits in a BillboardGui or SurfaceGui inside another emitter’s RenderTemplate | That BillboardGui or SurfaceGui on the parent particle. |
| 3 | The emitter sits inside another ImageLabel emitter | The parent image particle. |
| 4 | None of the above | A full-screen layer that the plugin manages. |
Emit Into takes any instance. For the particles to be seen, pick one that shows UI: a ScreenGui, a Frame inside one, a BillboardGui or a SurfaceGui.
With Emit Into empty, particles are drawn on a full-screen layer the plugin manages. It sits behind your game’s UI. Set Emit Into to choose your own container.
| The full-screen layer | |
|---|---|
| In the editor | It lies over the Studio viewport. |
| In a game | It belongs to one player. Only that player sees the particles. |
| Its size | The whole screen, the top bar area included. |
| Its depth | Behind every ScreenGui that keeps its starting display order. |
| When the character respawns | It stays. |
| When the plugin is switched off | It is removed. |
To set the container from a script, set the Value of the emitter’s EmitParent. A container that exists only while the game runs must be set that way.
- Position and Size are in Roblox UI units: a fraction of the container plus a count of pixels.
- Motion is in pixels. A Speed of 1 is 100 pixels a second. An Acceleration of 1 adds 100 pixels a second, each second.
- Angles are in degrees. 0 points right and 90 points up.
- Screen Y grows downward. A positive Y in Acceleration pushes down.
Emission
Section titled “Emission”| Row | Kind | Starts at | Unit | What it does |
|---|---|---|---|---|
| Mode | List | Emit | Emit or Animate. See Emit against Animate. | |
| Loop | Switch | Off | Shown in Animate mode. Repeats the cycle until switched off. Switching it on starts a cycle at once. | |
| Enabled | Switch | Off | Shown in Emit mode. Makes particles at the Rate until switched off. | |
| Rate | Number | 10 | Particles per second | How many particles are made each second while Enabled is on, or during a Duration. |
| Lifetime | Two numbers | 1 | Seconds | How long each particle lasts. Each picks a value between the two. |
| Linger | Number | 0 | Seconds | After its life ends, the particle stays in its last frame for this long. |
| Timescale | Graph | 1 | The speed of the particle’s own clock. |
The Rate row stays on show in Animate mode. Animate mode does not use it.
Emission and the HUD describes the shared rows in full.
Appearance
Section titled “Appearance”| Row | Kind | Starts at | Unit | What it does |
|---|---|---|---|---|
| Image | Text | The label’s own Image | The image shown. It is kept exactly as typed. | |
| ImageColor | Colour | White | The tint of the image. Drawn as a gradient, it changes over the particle’s life. | |
| Transparency | Graph | 0 | 0 to 1 | How far the image is seen through, over the particle’s life. 0 is opaque. 1 is invisible. |
| BG Color | Colour | White | The colour of the background. Drawn as a gradient, it changes over the particle’s life. | |
| BG Transparency | Graph | 1 | 0 to 1 | How far the background is seen through, over the particle’s life. At 1 there is no background. |
| ScaleType | List | The label’s own | How the image fills the particle’s rectangle: Stretch, Slice, Tile, Fit or Crop. | |
| ResampleMode | List | The label’s own | Default scales the image smoothly. Pixelated keeps hard pixels, for pixel art. |
Enter the Image as rbxassetid:// followed by the asset’s number. With the box empty nothing is shown, unless a Decals flipbook supplies the frames.
Slice and Tile use the slice and tile settings of the RenderTemplate. The plugin has no rows for them.
The box of a graph row takes one number, or two numbers as lo, hi. Two numbers give each particle one value between them for its whole life. The ⋯ button opens the graph editor. On a colour row it opens the colour editor.
| Row | Kind | Starts at | Unit | What it does |
|---|---|---|---|---|
| Position | Four numbers, sx, ox, sy, oy | The label’s own Position | Fraction and pixels | Where each particle starts. |
| Size | Four numbers, sx, ox, sy, oy | The label’s own Size | Fraction and pixels | The base size of each particle. |
| Size Scale | A graph for each axis, with X and Y pills | 1 on both axes | Multiplier | Multiplies the base Size over the particle’s life, on each axis. |
| AnchorPoint | Two numbers, x, y | The label’s own AnchorPoint | Fraction of the image | The point of the image that sits on Position. |
| ZIndex | Number | The label’s own ZIndex | The draw order inside the container. | |
| Rotation | Two numbers, min, max | 0 | Degrees | The angle a particle starts at. Each picks a value between the two. |
Position and Size
Section titled “Position and Size”sx and sy are fractions of the container. ox and oy are pixels.
| Row | Typed | Result |
|---|---|---|
| Position | 0.5, 0, 0.5, 0 | The centre of the container. |
| Position | 0, 50, 1, -50 | 50 pixels from the left edge and 50 pixels up from the bottom edge. |
| Size | 0, 100, 0, 100 | 100 by 100 pixels. |
| Size | 0.1, 0, 0.1, 0 | A tenth of the container on each axis. |
In AnchorPoint, Acceleration and Grid, one number is taken for both values. Text with no number in it is not taken. The box flashes red and shows the old value again.
Size Scale
Section titled “Size Scale”Click X, Y or both. Then enter one number, enter two numbers as lo, hi, or press ⋯ to draw a graph. The edit goes to every pill that is lit. With no pill lit nothing is written.
Size Scale multiplies both parts of Size, the fraction and the pixels. An X graph from 1 to 2 with Y at 1 stretches the image to double width.
A keypoint below 0 is kept as 0.
Rotation
Section titled “Rotation”-30, 30 starts each particle tilted somewhere between -30 and 30 degrees. One number gives every particle the same angle.
Motion
Section titled “Motion”| Row | Kind | Starts at | Unit | What it does |
|---|---|---|---|---|
| EmissionAngle | Number | 90 | Degrees | The direction of launch. 0 is right, 90 is up, 180 is left, 270 is down. |
| SpreadAngle | Number | 0 | Degrees | The widest turn away from EmissionAngle, to either side. Each particle picks its own. |
| Speed (x100 px/s) | Graph | 0 | Hundreds of pixels a second | The speed along the direction of launch, over the particle’s life. |
| Acceleration | Two numbers, x, y | 0, 0 | Hundreds of pixels a second, each second | A steady push. |
| Drag | Number | 0 | Slows the particle as it ages. | |
| Reverse Motion | Switch | Off | The particle starts where it would have ended and travels back to Position. | |
| Rot Mode | List | OverLife | How Rot Speed is read: OverLife or Speed. | |
| Rot Speed | Graph | 0 | Degrees, or degrees per second | Turns the image over its life. |
With Speed at 0 and Acceleration at 0, 0 a particle does not move. A Speed keypoint below 0 is kept as 0.
Motion is added to the pixel part of Position. The fraction part does not change during a particle’s life.
SpreadAngle
Section titled “SpreadAngle”Each particle launches at EmissionAngle plus a random amount between minus SpreadAngle and plus SpreadAngle.
| SpreadAngle | Result |
|---|---|
| 0 | Every particle leaves in the same direction. |
| 30 | A fan 60 degrees wide. |
| 180 | Every direction. |
Acceleration
Section titled “Acceleration”0, 5 adds 500 pixels a second of downward speed, each second. 0, -5 pushes up.
Drag makes the speed die away with age. At 0 or less there is no drag.
| Drag | Share of the Speed graph’s value left at an age of 1 second |
|---|---|
| 1 | About 37 % |
| 3 | About 5 % |
The speed built up by Acceleration dies away at about the same rate.
Reverse Motion
Section titled “Reverse Motion”The particle’s clock runs backward. Its size, colour, transparency and rotation graphs play from end to start, and so does its flipbook.
With a Speed graph that changes very fast, a particle can end a few pixels away from Position.
Rot Mode and Rot Speed
Section titled “Rot Mode and Rot Speed”| Rot Mode | The Rot Speed graph is | Example |
|---|---|---|
OverLife | The angle at that point of the life, in degrees. It is added to the starting Rotation. | A graph from 0 to 360 turns the image once over its life, whatever the Lifetime. |
Speed | A rate of turning, in degrees per second. | A level 360 turns the image once every second. |
A value below 0 turns the image the other way.
Flipbook
Section titled “Flipbook”| Row | Kind | Starts at | Unit | What it does |
|---|---|---|---|---|
| Source | List | Decals | Where the frames come from: Decals or Spritesheet. | |
| Play Mode | List | Loop | How the frames are played: Loop, OneShot, PingPong or Random. | |
| Grid | Two numbers, cols, rows | 8, 1 | Columns, rows | How the sheet is cut into cells. Shown only with Source Spritesheet. |
| Framerate | Two numbers, min, max | 10 | Frames per second | The pace of Loop and Random. Each particle picks a value between the two. Hidden with Play Mode OneShot. |
| StartRandom | Switch | Off | Each particle starts on a random frame. Play Mode Loop only. | |
| Reverse | Switch | Off | Plays the frames in the opposite order. |
Source
Section titled “Source”| Source | The frames are | Notes |
|---|---|---|
Decals | The Decals in the emitter’s ImageFlipbooks folder. Name them 1, 2, 3 and so on. | Each frame replaces the particle’s Image. With the folder empty there is no flipbook, and the Image row is shown. |
Spritesheet | The cells of the one Image, cut by Grid. | Cells are read left to right, then top to bottom. |
With Source Decals, a crop rectangle on the label is cleared at every emit.
The list of Decals is read again at every emit. A Decal added to the folder shows from the next particle.
Decals and flipbooks describes flipbook folders in full.
Play Mode
Section titled “Play Mode”| Play Mode | What plays |
|---|---|
Loop | The frames advance at the Framerate and start again after the last. |
OneShot | The frames play once, spread evenly over the Lifetime. The particle ends on the last frame. |
PingPong | The frames play forward during the first half of the Lifetime and backward during the second half. This happens once. Framerate does not set the pace. |
Random | A new random frame is shown at the Framerate. At Framerate 10 the frame changes ten times a second. |
A Framerate of 0 or less stops the flipbook in every Play Mode.
The flipbook follows the particle’s own clock. Timescale and Reverse Motion change its play.
Grid takes whole numbers of 1 or more. The box shows the cleaned value after an edit.
The number of frames is always columns times rows. There is no row for using fewer. Empty cells at the end of a sheet are shown as frames.
The size of a sheet
Section titled “The size of a sheet”To cut a sheet into cells, the plugin needs the pixel size of the sheet. The plugin works out the sheet’s pixel size for you while you edit. It does so when an ImageLabel emitter is selected, and when the Image box is left.
- The size is kept on the emitter and goes with it into the game. A running game does not work it out.
- The Image must be entered as
rbxassetid://followed by a number, and Studio must be online. - The size holds for the image it was measured for. If a script changes the Image in a running game, the whole sheet is shown.
A particle emitted while the size is not known shows the whole sheet for its whole life. The Output window reads, once for each image:
Part-Icles: Spritesheet flipbook - sheet dimensions unknown for <image>. Emit will render full sheet until dimensions resolve.
If Output says the sheet dimensions are unknown, reselect the emitter while online. Particles emitted after that are cut correctly.
Events
Section titled “Events”The Events section holds On Emit, On Death and On Destruction. There is no On Hit. See Events.
Advanced
Section titled “Advanced”| Row | Kind | Starts at | What it does |
|---|---|---|---|
| Anim. Steps | Number | 100 | How many times the graphs are read over one Lifetime. A value of 0 or less is run as 100. |
| Emit Into | Instance, picked with * | None | The container the particles are drawn in. See Where the particles are drawn. |
| Preload Texture | Switch | Off | Keeps the emitter’s images loaded, so that the first emit does not show a blank image. |
Advanced describes these rows in full.
The first emit of an emitter waits until its images have loaded.
Anim. Steps and stepped motion
Section titled “Anim. Steps and stepped motion”A particle’s position, rotation, size, colour and transparency change only at a step. The flipbook advances at every frame.
Take a Lifetime of 10 seconds and 100 steps. The particle moves 10 times a second, and the motion looks stepped. For smooth motion, Anim. Steps divided by Lifetime should be at least the frame rate. A 10 second particle at 60 frames a second needs 600 steps.
A particle of 1 second at 100 steps already changes at every frame.
Emit against Animate
Section titled “Emit against Animate”| Emit | Animate | |
|---|---|---|
| What plays | A new particle for each emit. | One particle for the emitter. |
| Emit count and Rate | Used. | Not used. A count of 0 still plays. |
| Fired again while playing | More particles are added. | The press is ignored until the cycle ends. |
| At the end | The particle is removed, after the Linger. | With Loop off, the particle holds for the Linger. Then it is removed. |
| Loop | Not shown. | The same particle replays until Loop is switched off. |
With Loop on, each pass starts again from Position. It picks a new direction and a new starting Rotation, and it reads the rows again. An edit made while the loop runs shows from the next pass.
Editor against game
Section titled “Editor against game”| In the editor | In a game, on a player’s machine | In a game, from a server script | |
|---|---|---|---|
| Emit Into empty | Drawn over the Studio viewport. | Drawn on that player’s screen, behind the game’s UI. | Not visible. |
| Emit Into set | Drawn in that container, if Studio shows it. | Drawn in that container. | Placed in that container. Who sees it depends on the container. |
| The size of a sheet | Worked out while you edit. | Read from what the editor kept. | Read from what the editor kept. |
Particles are never saved with the place.
Nesting and events
Section titled “Nesting and events”| Arrangement | Result |
|---|---|
| An ImageLabel emitter inside another ImageLabel emitter | It fires once for each parent particle, with its own Emit count, Delay and Duration. Its particles are drawn inside the parent particle and travel with it. |
An ImageLabel emitter in a BillboardGui or SurfaceGui, inside a Part emitter’s RenderTemplate | Each 3D particle carries its own 2D particles. |
| An ImageLabel emitter as the target of an event | It fires in place. An event cannot move it. An Emit count of 0 is treated as 1. |
Inside a parent image particle, fractions in Position and Size are fractions of the parent image.
Only ImageLabel emitters placed inside an ImageLabel emitter are fired this way. A nested emitter with an Emit count of 0 and a Duration of 0 never fires. See Nesting.
In an event script, payload.SetColor sets the tint of the image and payload.SetTransparency sets its transparency. payload.SetSize takes a UDim2. See The event script and its payload.
With the tools
Section titled “With the tools”| Tool | Effect on an ImageLabel emitter |
|---|---|
| Size | Multiplies the Speed graph, both Size Scale graphs, Acceleration, and both parts of Position and Size. |
| Time | Multiplies Rate, Drag, Framerate and the Speed and Rot Speed graphs. Divides Lifetime. Multiplies Acceleration by the factor squared. |
Size and Time describes both tools.
Limits
Section titled “Limits”- An ImageLabel emitter emits images. A TextLabel inside the label is removed from the
RenderTemplateat Transform. - No Link. A particle does not follow a 3D object, unless its container is a BillboardGui or SurfaceGui on that object.
- Fired from a server script with Emit Into empty, the particles are not visible.
- A flipbook from a sheet always uses every cell of the Grid.
- Each particle counts as one particle toward the Particle Cap.