ParticleUI is a Roblox Lua module that generates customizable particle effects directly inside UI elements. It’s designed to bring dynamic visuals to menus, HUDs, and interfaces without relying on 3D particle systems.
- Textures & flipbook animations
- Color sequences & gradients
- Size scaling (fixed, ranged, or animated)
- Transparency fades
- Motion with speed, direction, and acceleration
- Rotation and spin
- Burst emission or continuous looping
- Automatic cleanup after particle lifetime
- Place the
ParticleUIMod.lua
module inReplicatedStorage
(or your preferred location). - Require it in your local scripts:
local ParticleUI = require(ReplicatedStorage:WaitForChild("ParticleUIMod"))
Create a new particle system:
local particle = ParticleUI.new(player, {
Texture = "Lightning",
LifeTime = 0.6,
Rate = 15,
Size = Vector2.new(0.5, 1.5),
Color = {Color3.fromRGB(255, 100, 100), Color3.fromRGB(255, 255, 255)},
Transparency = Vector2.new(0, 1),
Position = UDim2.new(0.5, 0, 0.5, 0),
Speed = 12,
Rotation = Vector2.new(-180, 180),
Parent = player.PlayerGui.GameUI
})
Creates a new particle system.
Parameters:
player
— The player instance (used to attach particles to their UI).properties
— A table of settings (see below for customization options).
Common properties:
Texture
(UI object or name in ReplicatedStorage.UI) – particle imageLifeTime
(number) – lifetime of each particle (seconds)Size
(number | Vector2 | NumberSequence) – size scalingTransparency
(number | Vector2 | NumberSequence) – fade in/outColor
(Color3 | {Color3, Color3} | ColorSequence) – color or gradientPosition
(UDim2 | {UDim2, UDim2}) – starting position or areaSpeed
(number | Vector2) – particle speedSpeedAngle
(number | Vector2) – emission angle in degreesAcceleration
(Vector2) – movement accelerationRotation
(number | Vector2) – initial rotationRotSpeed
(number | Vector2) – continuous rotation speedRate
(number) – particles per second for continuous emissionParent
(UI object) – container for particlesYesFlipbook
(boolean) – enable flipbook animationFlipbookLayout
(Vector2) – number of rows/columns in flipbookFlipbookFramerate
(number) – playback speedFlipbookMode
("OneShot" | "Loop") – playback typeFlipbookStartRandom
(boolean) – random start frame
Emits a burst of particles.
Parameters:
amount
(number, optional) – how many particles to emit (default = 5).
Example:
particle:Emit(20)
Starts or stops continuous emission.
Parameters:
isOn
(boolean) –true
to start,false
to stop.
Example:
particle:Enabled(true) -- start looping
particle:Enabled(false) -- stop looping
Stops the emitter and cleans up resources.
Example:
particle:Destroy()
MIT