Smoke
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
La fumée est l'une des plusieurs Classesémettrices de particules.Comme d'autres émetteurs de particules de son genre, les objets de fumée émettent des particules lorsqu'ils sont parentés à un BasePart (comme un Part ) ou un Attachment dans une telle BasePart .Par rapport à la classe ParticleEmitter , Smoke manque de nombreuses propriétés de personnalisation différentes et de méthodes spéciales, telles que ParticleEmitter.Lifetime ou ParticleEmitter:Emit().Il est utile de créer un effet spécial rapide en détresse ; pour un travail plus détaillé, il est préférable d'utiliser un ParticleEmitter à la place.
Lorsque Smoke.Enabled est désactivé, les particules émises par cet objet continueront à rendre jusqu'à ce que leur durée de vie expire.Lorsque l'objet de fumée Instance.Parent est défini sur nil (et/ou Instance:Destroy() édit), toutes les particules disparaîtront instantanément.Si cet effet n'est pas souhaité, essayez de cacher l'objet parent à une position éloignée, puis de supprimer la fumée après quelques secondes en utilisant Debris pour donner aux dernières particules une chance d'expirer.Cet objet n'a pas de méthode ParticleEmitter:Clear() , mais il est possible de définir le Instance.Parent à nil et de retourner à l'exact même objet pour le même effet.
Les particules de fumée ne sont émises que depuis le centre de BasePart vers lequel elles sont parentées.Parenter un objet de fumée à un Attachment au lieu de cela permet une personnalisation de la position de départ des particules.
Échantillons de code
This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.
local function recurseForFire(object)
-- Check if we found a Fire object that has no Smoke
if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
-- Create a smoke effect for this fire
local smoke = Instance.new("Smoke")
smoke.Color = Color3.new(0, 0, 0)
smoke.Opacity = 0.15
smoke.RiseVelocity = 4
smoke.Size = object.Size / 4
smoke.Parent = object.Parent
end
-- Continue search for Fire objects
for _, child in pairs(object:GetChildren()) do
recurseForFire(child)
end
end
recurseForFire(workspace)
Résumé
Propriétés
Détermine la couleur des particules de fumée.
Détermine si les particules de fumée émettent.
Détermine comment les particules de fumée opaque rendu.
Détermine la vitesse des particules de fumée.
Détermine la taille des particules de fumée nouvellement émises.
Valeur comprise entre 0-1 qui contrôle la vitesse de l'effet de particule.
Propriétés
Color
La propriété Couleur détermine la couleur de toutes les particules émises par un objet Smoke (particules existantes et futures).Il se comporte de manière similaire à ParticleEmitter.Color , sauf qu'il n'est qu'une seule couleur et non pas un ColorSequence .Une couleur blanche avec un peu de Smoke.Opacity rend un joli effet de brouillard, et une couleur noire très opaque peut compléter un objet Fire de manière agréable.
Échantillons de code
This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.
local function recurseForFire(object)
-- Check if we found a Fire object that has no Smoke
if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
-- Create a smoke effect for this fire
local smoke = Instance.new("Smoke")
smoke.Color = Color3.new(0, 0, 0)
smoke.Opacity = 0.15
smoke.RiseVelocity = 4
smoke.Size = object.Size / 4
smoke.Parent = object.Parent
end
-- Continue search for Fire objects
for _, child in pairs(object:GetChildren()) do
recurseForFire(child)
end
end
recurseForFire(workspace)
Enabled
La propriété activée, tout comme ParticleEmitter.Enabled, détermine si des particules de fumée sont émises.Toutes les particules déjà émises continueront à rendre jusqu'à ce que leur durée de vie expire.Cette propriété est utile pour garder les effets de fumée préfabriqués désactivés jusqu'à ce qu'ils soient nécessaires plus tard.Puisque les particules de fumée sont détruites lorsque l'objet est réglé sur , cette propriété est utile pour permettre aux particules existantes d'expirer avant de détruire complètement l'objet Feu.Voir la fonction ci-dessous.
local Debris = game:GetService("Debris")
local part = script.Parent
function stopSmoke(smoke)
smoke.Enabled = false -- No more new particles
Debris:AddItem(smoke, 10) -- Remove the object after a delay (after existing particles have expired)
end
stopSmoke(part.Smoke)
Échantillons de code
This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.
local function recurseForFire(object)
-- Check if we found a Fire object that has no Smoke
if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
-- Create a smoke effect for this fire
local smoke = Instance.new("Smoke")
smoke.Color = Color3.new(0, 0, 0)
smoke.Opacity = 0.15
smoke.RiseVelocity = 4
smoke.Size = object.Size / 4
smoke.Parent = object.Parent
end
-- Continue search for Fire objects
for _, child in pairs(object:GetChildren()) do
recurseForFire(child)
end
end
recurseForFire(workspace)
LocalTransparencyModifier
Opacity
L'opacité détermine l'opacité des particules de fumée.Il doit être dans la plage [0, 1].Cette propriété fonctionne inversément par rapport à une partie's BasePart.Transparency ou ParticleEmitter's ParticleEmitter.Transparency : une valeur de 0 est complètement invisible, 1 est complètement visible.
La texture que Roblox utilise pour les particules Smoke est partiellement transparente, donc le réglage de cette propriété sur 1 donne toujours de la transparence dans la fumée rendue.
Échantillons de code
This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.
local function recurseForFire(object)
-- Check if we found a Fire object that has no Smoke
if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
-- Create a smoke effect for this fire
local smoke = Instance.new("Smoke")
smoke.Color = Color3.new(0, 0, 0)
smoke.Opacity = 0.15
smoke.RiseVelocity = 4
smoke.Size = object.Size / 4
smoke.Parent = object.Parent
end
-- Continue search for Fire objects
for _, child in pairs(object:GetChildren()) do
recurseForFire(child)
end
end
recurseForFire(workspace)
RiseVelocity
RiseVelocity se comporte de manière similaire à ParticleEmitter.Speed et Fire.Heat : il détermine à quelle vitesse les particules de fumée se déplacent pendant leur vie.Il doit être dans la plage [-25, 25].Les valeurs négatives provoqueront l'émission de particules dans la direction inférieure (-Y) du parent BasePart .
Lors de l'utilisation d'un effet Smoke pour créer du brouillard, définissez cette propriété à 0.Pour les grands effets de fumée, rendez la montée subtile (de 2 à 8).Pour les cheminées et les cheminées, des valeurs plus élevées sont appropriées.
Échantillons de code
This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.
local function recurseForFire(object)
-- Check if we found a Fire object that has no Smoke
if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
-- Create a smoke effect for this fire
local smoke = Instance.new("Smoke")
smoke.Color = Color3.new(0, 0, 0)
smoke.Opacity = 0.15
smoke.RiseVelocity = 4
smoke.Size = object.Size / 4
smoke.Parent = object.Parent
end
-- Continue search for Fire objects
for _, child in pairs(object:GetChildren()) do
recurseForFire(child)
end
end
recurseForFire(workspace)
Size
La propriété Taille de Smoke détermine la taille des particules de fumée nouvellement émises.Contrairement à Smoke.Color, cette propriété ne changera pas la taille des particules existantes.Il doit être dans la plage [0.1, 100].Contrairement à ParticleEmitter.Size, cette propriété n'est qu'un nombre (pas un NumberSequence).Notez également que la taille des particules n'est pas 1 à 1 avec les studs ; en fait, la taille de la particule de fumée est plus de deux fois plus grande.À la plus grande taille, les particules de fumée peuvent rendre plus grandes que 200 studs de large !
Échantillons de code
This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.
local function recurseForFire(object)
-- Check if we found a Fire object that has no Smoke
if object:IsA("Fire") and not object.Parent:FindFirstChildOfClass("Smoke") then
-- Create a smoke effect for this fire
local smoke = Instance.new("Smoke")
smoke.Color = Color3.new(0, 0, 0)
smoke.Opacity = 0.15
smoke.RiseVelocity = 4
smoke.Size = object.Size / 4
smoke.Parent = object.Parent
end
-- Continue search for Fire objects
for _, child in pairs(object:GetChildren()) do
recurseForFire(child)
end
end
recurseForFire(workspace)
TimeScale
Une valeur entre 0-1 contrôle la vitesse de l'effet de particule.À 1, il fonctionne à une vitesse normale, à 0,5 il fonctionne à moitié vitesse, et à 0, il gèle le temps.