Smoke

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

烟雾是几个颗粒发射类别之一。像其他类型的粒子发射器一样,烟雾对象在与父辈(例如,一个 )或在这样的父辈内部发射粒子(例如,一个 )。与 ParticleEmitter 类相比,烟雾缺乏许多不同的自定义属性和特殊方法,例如 ParticleEmitter.LifetimeParticleEmitter:Emit() 。在紧急情况下创建快速特效有用;对于更详细的工作,建议使用 ParticleEmitter 来进行。

Smoke.Enabled关闭时,由此对象发射的粒子将继续渲染,直到其生命周期到期。当烟雾对象的 Instance.Parent 设置为 nil (和/或 Instance:Destroy() 编辑)时,所有粒子将立即消失。如果不想要这种效果,请尝试隐藏父对象在遥远位置,然后使用 Debris 在几秒钟后移除烟雾,以给最后一些粒子一个机会过期。该对象没有 ParticleEmitter:Clear() 方法,但可以将 Instance.Parent 设置为 nil 并返回到相同的对象以获得相同的效果。

烟雾粒子只从BasePart中心发射到它们的父辈。将烟雾对象转换为 Attachment 而不允许父辈化粒子的起始位置的自定义

代码示例

This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.

Add Smoke to All Fire

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)

概要

属性

属性

Color

读取并联

颜色属性决定了所有由 Smoke 对象发射的粒子的颜色(既存粒子和未来粒子)。它与 ParticleEmitter.Color 相似,除了它只有一个颜色而不是 ColorSequence 。一些白色的颜色Smoke.Opacity使得雾效果很漂亮,非常不透明的黑色可以很好地补充一个Fire对象。

代码示例

This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.

Add Smoke to All Fire

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

读取并联

启用属性,与 ParticleEmitter.Enabled 类似,决定是否发出烟雾粒子。任何已发射的粒子将继续渲染,直到其使用期过期。此属性有助于保持预制的烟雾效果直到稍后需要它们为止。由于烟雾粒子在 Smoke 对象的 Instance.Parent 设置为 nil 时被摧毁,这个属性有助于允许现有粒子在摧毁火焰对象之前有机会过期。请参阅下面的函数。


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)

代码示例

This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.

Add Smoke to All Fire

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

未复制
读取并联

不透明度决定了烟雾粒子的不透明度。它必须在范围 [0, 1] 内。这个属性在比较于零件的 或粒子发射器的 时工作:一个值为 0 是完全隐形的,一个值为 1 是完全可见的:

Roblox 使用的粒子纹理部分透明,因此将此属性设置为 1 仍然可以在渲染的烟雾中获得透明度

代码示例

This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.

Add Smoke to All Fire

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与ParticleEmitter.SpeedFire.Heat相似:它决定烟雾粒子在生命周期内移动的速度。它必须在 [-25, 25] 范围内。负值会导致粒子在父BasePart的底部(-Y)方向发射。

当使用 Smoke 效果创建雾时,将此属性设置为 0。对于大型烟雾效果,使上升变得渐进(2到8)。对于烟囱和烟囱,更高的值更适合。

代码示例

This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.

Add Smoke to All Fire

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

未复制
读取并联

Smoke 的尺寸属性决定了新发射的烟雾粒子的尺寸。与 Smoke.Color 不同,此属性不会改变现有粒子的大小。它必须在范围 [0.1, 100] 内。与 ParticleEmitter.Size 不同,这个属性只是一个数字(不是 NumberSequence)。还需要注意的是,粒子的尺寸与螺柱不是 1 对 1;事实上,烟雾粒子的尺寸是大于两倍的。在最大尺寸上,烟雾粒子可以渲染宽度超过 200 个单位!

代码示例

This code sample adds a Smoke object to every Fire object in the Workspace. It does this by using a recursive search.

Add Smoke to All Fire

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

读取并联

小于 0-1 的值控制粒子效果的速度。在 1 处,它以正常速度运行,在 0.5 处,它以半速运行,在 0 处,它冻结时间。

方法

活动