Show Deprecated

Smoke is one of several particle-emitting classes. Like other particle emitters of its kind, Smoke objects emit particles when parented to a BasePart (such as a Part) or an Attachment within such a BasePart. Compared to the ParticleEmitter class, Smoke lacks many different customization properties and special methods, such as ParticleEmitter.Lifetime or ParticleEmitter:Emit(). It is useful to create a quick special effect in a pinch; for more detailed work it is preferable to use a ParticleEmitter instead.

When Smoke.Enabled is toggled off, particles emit by this object will continue to render until their lifetime expires. When a Smoke object's Instance.Parent is set to nil (and/or Instance:Destroy()ed), all particles will instantly disappear. If this effect is not desired, try hiding the parent object at a far away position, then removing the Smoke after a few seconds using Debris to give the last particles a chance to expire. This object does not have a ParticleEmitter:Clear() method, but it is possible to set the Instance.Parent to nil and back to the exact same object for the same effect.

Smoke particles are only emit from the center of BasePart to which they are parented. Parenting a Smoke object to an Attachment instead allows customization of the particles' start position.

Code Samples

Add Smoke to All Fire

1local function recurseForFire(object)
2 -- Check if we found a Fire object that has no Smoke
3 if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
4 -- Create a smoke effect for this fire
5 local smoke ="Smoke")
6 smoke.Color =, 0, 0)
7 smoke.Opacity = 0.15
8 smoke.RiseVelocity = 4
9 smoke.Size = object.Size / 4
10 smoke.Parent = object.Parent
11 end
12 -- Continue search for Fire objects
13 for _, child in pairs(object:GetChildren()) do
14 recurseForFire(child)
15 end



Determines the color of the smoke particles.

Determines whether smoke particles are emit.

Determines how opaque smoke particles render.


Determines the velocity of the smoke particles.


Determines the size of newly emit smoke particles.


Value between 0-1 that controls the speed of the particle effect.



FastForward(numFrames: number): void  



The Color property determines the color of all the particles emit by a Smoke object (both existing and future particles). It behaves similarly to ParticleEmitter.Color, except that it is only one color and not a ColorSequence. A color of white with some Smoke.Opacity makes for a nice fog effect, and a very opaque black color can compliment a Fire object nicely.


The Enabled property, much like ParticleEmitter.Enabled, determines whether smoke particles are emit. Any particles already emit will continue to render until their lifetime expires. This property is useful for keeping pre-made smoke effects off until they are needed later. Since smoke particles are destroyed when the Smoke object's Instance.Parent is set to nil, this property is useful in allowing existing particles the opportunity to expire before destroying the Fire object altogether. See the function below.

1local Debris = game:GetService("Debris")
2local part = script.Parent
3function stopSmoke(smoke)
4 smoke.Enabled = false -- No more new particles
5 Debris:AddItem(smoke, 10) -- Remove the object after a delay (after existing particles have expired)


Not Replicated

Opacity determines the opaqueness of the smoke particles. It must be in the range [0, 1]. This property works inversely in comparison to a part's BasePart.Transparency or ParticleEmitter's ParticleEmitter.Transparency: a value of 0 is completely invisible, 1 is completely visible.

The texture that Roblox uses for Smoke particles is partially transparent, so setting this property to 1 still yields transparency in rendered smoke.


Not Replicated

RiseVelocity behaves similarly to ParticleEmitter.Speed and Fire.Heat: it determines how fast the smoke particles move during their lifetime. It must be in the range [-25, 25]. Negative values will cause particles to emit in the bottom (-Y) direction of the parent BasePart.

When using a Smoke effect to create fog, set this property to 0. For large smoke effects, make the rise subtle (2 to 8). For chimneys and smokestacks, higher values are appropriate.


Not Replicated

The Size property of Smoke determines the size of the newly emit smoke particles. Unlike Smoke.Color, this property will not change the size of existing particles. It must be in the range [0.1, 100]. Unlike ParticleEmitter.Size, this property is only a number (not a NumberSequence). Also note also that the size of the particles is not 1-to-1 with studs; in fact, the size of the smoke particle is more than twice as large. At the largest size, smoke particles can render larger than 200 studs wide!


A value between 0-1 than controls the speed of the particle effect. At 1 it runs at normal speed, at 0.5 it runs at half speed, and at 0 it freezes time.




Roblox Script Security


numFrames: number