UIEmitter Module - UI Particles (& Confetti)

Hello developers!

I’ve made a new impactful module to make your UI designs come to life - introducing UIEmitter!

With UIEmitter you could:

  • Create celebratory confetti explosions for victories and milestones or even purchases.
  • Shower players with stars or sparkles when they level up or achieve a goal.
  • Mimic fire, smoke, rain, or magical auras within UI components.
  • Add gentle animations or moving patterns behind menus and screens.
  • Use shimmering effects or subtle trails to highlight important information.
  • Create subtle particle bursts on button clicks or hovers.

Heres some previews of some confetti I made from the module.





In some of the videos the conffeti gets deleted when it hits the ceiling (When its off screen), I’ve added this for performance. You can remove this in the module code if you want but it might get laggy the more particles you emit.


How to use UIEmitter.

local UIEmitter = require(game.ReplicatedStorage:FindFirstChild("UIEmitter")) -- get & require the module
local Emitter = UIEmitter.New() -- create a new screen gui dedicated to these emits

How to spawn/emit a particle.

Emitter:Emit({
	Size = Vector2.new(10, 10),
	Position = Vector2.new(0, 0),
	Acceleration = Vector2.new(0, 0),
	Gravity = Vector2.new(0, 0),
	FrictionCoefficient = 1,
	LifeTime = 4,
	Properties = {},
	FadeIn = {
		Duration = 1,
		EasingStyle = Enum.EasingStyle.Quart,
		EasingDirection = Enum.EasingDirection.Out,
		TweenProperties = {},
	},
	FadeOut = {
		Duration = 1,
		EasingStyle = Enum.EasingStyle.Quart,
		EasingDirection = Enum.EasingDirection.In,
		TweenProperties = {},
	},
	Texture = "",
});

Heres my code for some confetti.

This conffeti code emits in the center of the screen, are accelerating up, and theres random waits.

for Int = 0, 100, 1 do
	Emitter:Emit({
		Size = Vector2.new(10, 10),
		Position = Camera.ViewportSize/2,
		Acceleration = Vector2.new(math.random(-20, 20), -math.random(10, 70)),
		Gravity = Vector2.new(0, 2),
		FrictionCoefficient = 1.0005,
		LifeTime = 4,
		Properties = {
			BackgroundColor3 = ({Color3.fromRGB(255, 20, 20), Color3.fromRGB(20, 255, 80), Color3.fromRGB(20, 20, 255), Color3.fromRGB(255, 20, 255)})[math.random(1, 4)],
		},
		FadeIn = {
			Duration = 1,
			EasingStyle = Enum.EasingStyle.Quart,
			EasingDirection = Enum.EasingDirection.Out,
			TweenProperties = {
				Rotation = math.random(0, 360),
			},
		},
		FadeOut = {
			Duration = 1,
			EasingStyle = Enum.EasingStyle.Quart,
			EasingDirection = Enum.EasingDirection.In,
			TweenProperties = {
				BackgroundTransparency = 1,
			},
		},
		Texture = "",
	});
	if math.random(1, 2) == math.random(1, 2) then
		task.wait();
	end;
end;

Get UIEmitter


Would you use this?

  • Definitely!
  • Yes, when I get the chance to.
  • I’m not sure.
  • Probably not.
  • No, sorry.

0 voters

What do you think about UIEmitter?

  • Love it! Super easy to use and looks great.
  • Seems promising, but I’d like to see more features.
  • Fun to experiment with, not sure if it’s essential for my projects.
  • I wish it integrated better with my existing UI workflow.
  • Too complex for my needs.
  • I’ve encountered some bugs/performance issues.
  • Not worth the effort compared to other solutions.

0 voters


Thank you for reading and viewing my module!

I will read any feedback & feature requests!
7 Likes

make a github repository about this, it would be way easier to give feedback!

edit: are you going to try and multi-thread this code for performance?

I’m not sure how to exactly make this multi-threaded but from my knowledge I think I can just use coroutine.wrap(). Correct me if I’m wrong because I want to make this multi-threaded in the next version!

I’ve made the GitHub repository for code feedback!

Thank you for your feedback!

This is byfar one of the most unique modules out there I am 100% going to use this in the evorooms development!

Is it possible for the module to create an outline effect similar to what’s shown here?

Those effects are for buttons, not for particles. Although I don’t know what you’re trying to show me since there’s multiple effects in that message.
Can you be more specific?
Thanks.

this sounds like a bot comment…

New version: Version 1-cb

Added

  • UIEmitterModule.From(<GuiObject>)
    This can be used on the server, and client. It’s used for gui objects like SurfaceGui and BillboardGui.
  • Some code optimization.

GitHub Repository
Roblox Marketplace

I’m getting an error when I try to distribute the module on marketplace. So I’m not sure if you can even get it. This is why I created the GitHub Repository.

If you want anything else to be added please tell me. I can’t read your mind.

I updated the Roblox Marketplace version to the newest, I forgot to do this…

You can download Version 1-cb by clicking this: UIEmitter.rbxm (5.0 KB)

With that it will auto update!