ParticleEmitter

显示已弃用

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

一个 粒子发射器 是一个特殊对象,可以向世界发射可定制的 2D 粒子。要发射和渲染粒子,必须被父辈到一个 BasePart 或一个 Attachment 在这样的部分内。当作为父辈到一个 BasePart 时,粒子会随机生成在零件的边界盒或 形状 内;当作为父辈到一个 Attachment 时,粒子会从附件的位置生成。

发射器当 Enabled 具有非零 Rate 时自动发射粒子,或者手动调用 Emit 方法时。使用非零 Speed 粒子向外或向内运动,取决于 ShapeInOut 属性。

默认情况下,粒子面向相镜头,但 Orientation 可以修改以尊重粒子速度。

在粒子的 Lifetime 期间,它们可以根据 ColorSize 来更改外观。他们的运动可以随着DragAcceleration属性的变化而改变,也可以像父辈一样移动,当它们是LockedToPart或有非零VelocityInheritance时。

了解有关创建和自定义粒子发射器的更多信息,请参阅粒子发射器

代码示例

这段比较长的代码示例显示了如何设置 ParticleEmitter 的每个属性,包括 NumberRangeNumberSequenceColorSequence 属性。以下是粒子发射器应该在每个属性设置后的外观。尝试与不同属性的游戏,以自定义效果的外观!

从零开始创建粒子发射器

local emitter = Instance.new("ParticleEmitter")
-- 粒子数量 = 速率 * 有效期
emitter.Rate = 5 -- 每秒钟的粒子
emitter.Lifetime = NumberRange.new(1, 1) -- 粒子应存活多久(分钟,最大)
emitter.Enabled = true
-- 视觉属性
emitter.Texture = "rbxassetid://1266170131" -- 白色戒指的透明图像
-- 对于颜色,使用颜色序列关键点建立颜色序列
local colorKeypoints = {
-- API:颜色序列钥点.新(时间,颜色)
ColorSequenceKeypoint.new(0, Color3.new(1, 1, 1)), -- 在 t=0 时,白色
ColorSequenceKeypoint.new(0.5, Color3.new(1, 0.5, 0)), -- 在 t=.5 时,橙色
ColorSequenceKeypoint.new(1, Color3.new(1, 0, 0)), -- 在 t=1 时,红色
}
emitter.Color = ColorSequence.new(colorKeypoints)
local numberKeypoints = {
-- API:numberSequenceKeypoint.new(时间,大小,封装)
NumberSequenceKeypoint.new(0, 1), -- 在 t=0 时,完全透明
NumberSequenceKeypoint.new(0.1, 0), -- 在 t=.1 时,完全不透明
NumberSequenceKeypoint.new(0.5, 0.25), -- 在 t=.5 时,大多是不透明的
NumberSequenceKeypoint.new(1, 1), -- 在 t=1,完全透明
}
emitter.Transparency = NumberSequence.new(numberKeypoints)
emitter.LightEmission = 1 -- 当粒子重叠时,乘以它们的颜色以变得更亮
emitter.LightInfluence = 0 -- 不受世界照明影响
-- 速度属性
emitter.EmissionDirection = Enum.NormalId.Front -- 向前发射
emitter.Speed = NumberRange.new(0, 0) -- 零速度
emitter.Drag = 0 -- 对粒子运动不施加拖动
emitter.VelocitySpread = NumberRange.new(0, 0)
emitter.VelocityInheritance = 0 -- 不要继承父辈速度
emitter.Acceleration = Vector3.new(0, 0, 0)
emitter.LockedToPart = false -- 不要将粒子锁定到父级
emitter.SpreadAngle = Vector2.new(0, 0) -- 在任何轴上没有分布角度
-- 模拟属性
local numberKeypoints2 = {
NumberSequenceKeypoint.new(0, 0), -- 在 t=0 时,0 的尺寸
NumberSequenceKeypoint.new(1, 10), -- 在 t=1 时,10 的尺寸
}
emitter.Size = NumberSequence.new(numberKeypoints2)
emitter.ZOffset = -1 -- 稍微落后于实际位置渲染
emitter.Rotation = NumberRange.new(0, 360) -- 从随机旋转开始
emitter.RotSpeed = NumberRange.new(0) -- 在模拟期间不要旋转
-- 创建附件,使粒子从同一个位置发射(环形)
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 5, 0) -- 将附件向上移动一点
attachment.Parent = script.Parent
emitter.Parent = attachment

概要

属性

方法

  • Clear():()

    清除所有已发射的粒子。

  • Emit(particleCount : number):()

    发出一定数量的粒子。

属性

Acceleration

读取并联

加速属性决定了粒子在其生命周期内的 变化。它使用 Vector3 来确定全球 X / Y / Z 轴上的加速,并以每秒钟的 studs 计算。更改时,该属性会影响发射器发出的所有粒子,现有和未来的都包括在内

加速会使向量点在相反的 EmissionDirection 中减慢粒子速度,否则会加快它们的速度。

Brightness

读取并联

ParticleEmitter.LightInfluence 为 0 时,将发射器发出的光放大。

读取并联

颜色 属性决定了所有活跃粒子在其各自生命周期内的颜色。颜色适用于渲染时的 Texture ,并使用发射器的 Transparency 以及纹理 alpha 。如果发射器有一个值 LightEmission 大于 0 的值,那么更暗的颜色使粒子看起来更透明。

更改此属性会影响发射器发出的所有粒子,现有和未来的都是如此。

当此属性使用渐变 ColorSequence 时,粒子的现有颜色由使用粒子年龄和总生命时间的线性插值决定。例如,如果 2 秒前生成了一颗粒子并有 4 秒的寿命,颜色将是通过 ColorSequence 的 50% 的任何东西。

Drag

读取并联

拖动 属性决定了个人粒子在几秒钟内通过指数衰减失去一半速度的速率。拖动由缩放预期速度从 和从父级继承的任何速度来实现。将此属性设置为负值会导致粒子的速度指数增长。

EmissionDirection

读取并联

发射方向 属性决定从粒子发射的父对象的面(Enum.NormalId)负的 Speed 意味着粒子在相反的方向发射。SpreadAngle 进一步变化发射方向。

如果你将 ParticleEmitter 添加到 Attachment 上,该拥有方向,你可以使用附件本身(Attachment.Orientation)而不使用此属性来旋转附件。

Enabled

读取并联

启用 属性决定粒子是否从发射器发射。将其设置为 false 将阻止更多粒子生成,但现有的任何粒子都会保持活跃,直到它们过期。当您拥有预制的粒子效果,希望在需要发射粒子之前继续禁用时,此属性很有用。

如果您想清除禁用发射器的所有粒子,请调用 Clear() 。然后,如果需要,调用发射器的 Emit() 发射并渲染粒子。

FlipbookFramerate

读取并联

FlipbookFramerate 属性决定翻书纹理在每秒钟框架中动画的速度。像 Lifetime 一样,您可以设置最低和最高范围以随机化翻书的帧率,最高为每秒 30 帧。

FlipbookIncompatible

读取并联

如果 Texture 不兼容翻书,将显示错误消息。翻页书的图像必须为像素大小 8×8、16×16、32×32、64×64、128×128、256×256、512×512 或 1024×1024。

读取并联

FlipbookLayout 属性决定了纹理的布局。它可以是枚举值 Enum.ParticleFlipbookLayout 的任何值:

  • – 禁用翻书功能,并将纹理用作粒子生命周期内的单个静态纹理。
  • 网格2x2 – 4个框架的 2×2 框架用于 4 帧动画。
  • 网格4x4 – 16帧动画的 4×4 框架。
  • 网格8x8 – 64 帧动画的 8×8 框架。
读取并联

翻书模式 属性决定了翻书动画的类型。它可以是枚列 Enum.ParticleFlipbookMode 的任何值:

  • 循环 – 持续播放所有框架,从最后一个框架播放后开始返回到第一个框架。
  • 一击 – 在粒子的生命周期内只播放一次动画。在这个设置下,FlipbookFramerate 属性不适用;相反,帧率由分配给动画的每个粒子的Lifetime平均分割决定。 一击 动画对于清除不重复的动画有用,例如创建一团烟雾然后消失的爆炸。
  • 乒乓球 – 从第一个到最后一帧进行游戏,然后从最后一帧倒计时到第一帧,在整个粒子的 Lifetime 中重复。
  • 随机 – 播放框架以随机顺序,从一个框架融合/交叉到另一个框架。这可能对低帧率下的有机粒子纹理有用,例如星星缓慢地闪烁在微妙不同形状之间。

FlipbookStartRandom

读取并联

FlipbookStartRandom 属性决定每个粒子是否从动画的随机框开始,而不是始终从第一个框开始。一个使用案例是启用此属性并将 FlipbookFramerate 设置为零,导致每个发射的粒子都是从翻书纹理随机选择的静态框架。

Lifetime

读取并联

使用期 属性定义了新发射的粒子的最大和最小年龄。寿命以每个粒子为单位存储,因此如果此值发生变更,现有粒子将继续活跃,直到随机选择的寿命结束。0的使用期将防止粒子发射。

LightEmission

读取并联

发光 属性决定了Texture与颜色之间的混合。值为 0 的值使用普通混合模式,而值为 1 的值使用积累混合。更改时,该属性立即影响发射器拥有的所有粒子,现有和未来的粒子都受影响。

该属性不应与 LightInfluence 混淆,该属性决定了粒子是如何受到环境光影响的。

这个属性不会 导致 粒子照亮周围的环境。为了实现这一目标,请考虑使用一个PointLight

LightInfluence

读取并联

光影响 属性决定了环境光对个人粒子颜色渲染时的影响程度。它必须在 0–1 范围内;超出该范围的值的行为不定义。在 0 时,粒子不受光的影响(保持全亮度);在 1 时,粒子完全受光影响(在完全黑暗中,粒子将是黑色的)。

默认情况下,如果使用 Studio 工具插入,这个值为 1;如果使用 Instance.new() 插入,则为 0。

LocalTransparencyModifier

隐藏
未复制
读取并联

LockedToPart

读取并联

锁定到零件 属性决定是否需要将粒子“黏住”到发射源(即 AttachmentBasePart 对于哪个 ParticleEmitter 是父级)。如果 true , 激活的粒子在父对象移动时会以锁步移动。

或者,考虑使用 VelocityInheritance 属性的值为 1 的值,可能更适合某些效果。

读取并联

方向 属性决定使用哪种方向模式来描述发射器的粒子几何。


<td>粒子行为</td>
</tr>
</thead>
<tbody>
<tr>
<td><b>面向相机</b></td>
<td>标准面向相机的广告牌四格;默认行为。</td>
</tr>
<tr>
<td><b>面向相机世界向上</b></td>
<td>面向相镜头,但仅在垂直向上的世界上旋转<b>Y</b>轴。</td>
</tr>
<tr>
<td><b>速率并行</b></td>
<td>与其移动方向一致的并行。</td>
</tr>
<tr>
<td><b>速率垂直于方向盘</b></td>
<td>与他们的方向移动一致。</td>
</tr>
</tbody>
定向

Rate

读取并联

属性决定发射器在Enabled发射多少粒子每秒。它是频率的反向,意味着 5 的速率每 0.2 秒发射一次粒子。更改时,该属性对任何激活粒子没有影响。

RotSpeed

读取并联

旋速 属性决定了新发射的粒子的随机角速度范围,以度为单位每秒测量。在发射时随机选择角速度,因此更改此属性不会影响活跃的粒子。这个属性,以及Rotation ,影响渲染的粒子图像的角度。

具有非常高角速度的粒子可能会旋转得更慢或根本不旋转,因为旋转角度与软件渲染速度同步。例如,如果粒子每帧都以确切的 360 度旋转,那么旋转将没有明显的变化。

Rotation

读取并联

旋转 属性决定了新发射的粒子的旋转范围,以度为单位。正值在顺时针方向。此属性通常设置为 [0, 360] 以提供完全随机的旋转给新粒子。RotSpeed 还会影响粒子在其生命周期内的旋转。

对此值的更改仅影响新粒子;现有粒子保持在它们最初发射的旋转。

读取并联

形状 属性将发射器的形状设置为方块子、球、圆柱或圆盘。在你做出选择后,你可以调整 ShapeStyle , ShapeInOutShapePartial 属性来进一步调整粒子发射。对于视觉示例,请参阅这里

读取并联

设置粒子是否仅向外发射、仅向内发射或向内向外发射。对于视觉示例,请参阅 这里

ShapePartial

读取并联

根据 Shape 值,此属性执行不同的动作:

  • 对于圆柱,它指定了顶部半径比例。0的值意味着缸体顶部的半径为零,使其成为锥体。1的值意味着缸体没有变形。

  • 对于圆盘,它指定了内径比例。0的值意味着光盘完全关闭(圆圈/椭圆),而 1 的值意味着发射仅发生在光盘的最外边缘。从特定厚度的环发射的值在 0 和 1 之间。

  • 对于球体,它指定发射粒子的半球角度。值 1 表示粒子从整个球体发射;值 0.5 表示粒子从半球发射;值 0 表示粒子仅从北极的单个点发射。

对于视觉示例,请参阅这里

读取并联

将粒子发射设置为体积或仅表面发射。对于视觉示例,请参阅 这里

读取并联

大小 属性决定了所有激活粒子在其个别生命周期内的世界大小。该属性代表每个粒子的方块Texture的尺寸。它是一个类似于 NumberSequence 的工作方式的 Transparency .

粒子的现有尺寸由粒子的年龄和总生命时间线性插值决定,使用这个顺序上的粒子。例如,如果 2 秒前生成了一颗粒子并有 4 秒的寿命,那么尺寸将是通过 NumberSequence 的 50% 的任何东西。对于任何 NumberSequenceKeypoint 具有非零封装值的内容,在发射时,随机值在封装范围内被选择为每个钥匙点的每个粒子。

读取并联

速度 属性决定了新粒子发射的随机速度范围(从最低到最高),以每秒钟的点数计算。每个粒子的速度在发射时被选择,并在 EmissionDirection 中应用。负值导致粒子反向旅行。

请注意,更改 Speed 不会影响活跃的粒子,它们保留已有的任何速度。然而, Acceleration , Drag , 和 VelocityInheritance 可以用来影响活动粒子在其生命周期内的速度。

SpreadAngle

读取并联

散射角 属性决定了粒子可以发射的随机角度。例如,如果 EmissionDirection最佳 (+ Y ), 这 Vector2 描述了随机角度分布在 X / Z 轴上的尺寸,以度。

将一个轴设置为 360 会导致粒子在 圆圈 中发射到所有方向。将两者都设置为 360 会导致粒子在 球体 的所有方向发射。

读取并联

允许颗粒非标准化缩放,在其生命周期内由曲线控制。大于 0 的值导致粒子横向收缩和纵向增长,小于 0 的值导致粒子横向增长和纵向收缩。

Texture

ContentId
读取并联

纹理 属性决定了在粒子上渲染的图像。这张图受到 Color , Transparency , LightInfluenceLightEmission 的影响。透明背景的纹理最适合用于粒子。

TimeScale

读取并联

在 0 和 1 之间的值,用于控制粒子效果的速度。在 1 处,以正常速度运行;在 0.5 处,以半速运行;在 0 处,在时间内冻结。

Transparency

读取并联

透明 属性决定了所有激活粒子在其个别生命周期内的透明度。它与时间过程中影响粒子的方式类似于 Size 。在渲染方面,值 0 完全可见(不透明),值 1 完全不可见(不渲染)。

粒子的现有透明度由粒子的年龄和总生命时间线性插值决定,使用这个顺序。例如,如果 2 秒前生成了一颗粒子并有 4 秒的寿命,透明度将是通过 NumberSequence 的 50% 的任何东西。对于任何 NumberSequenceKeypoint 具有非零封装值的内容,在发射时,随机值在封装范围内被选择为每个钥匙点的每个粒子。

VelocityInheritance

读取并联

速度继承 属性决定了父部件的 Velocity 在发射时被粒子继承的多少。值为 0 的意思是没有速度被继承,而值为 1 的意思是粒子的速度将与父辈一样精确 BasePart .

当与 Drag 结合使用时,粒子发射器可以出现“从移动部件上“掉落”粒子。

WindAffectsDrag

读取并联

如果真实,发射的粒子遵循 Workspace.GlobalWind 矢量力。仅适用于 Drag 属性大于 0。

ZOffset

读取并联

ZOffset 属性决定了粒子的前向后向渲染位置,以螺柱为单位,不改变粒子在屏幕上的大小。更改时,该属性会影响当前和未来的粒子。请注意,该属性接受分数值;它不像 GuiObject.ZIndex (一个整数)。

正向值将粒子靠近镜头,负向值将粒子移开。足够负的值可以导致粒子在父部件内或后面渲染。

方法

Clear

()

清除方法立即清除所有已发射到通过其自然发射(非零在发射器上)或通过发射的所有现有粒子。


返回

()

代码示例

This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

Emit

()

发射 方法会导致ParticleEmitter立即发射给定数量的粒子。

参数

particleCount: number

要发射的粒子数量。

默认值:16

返回

()

代码示例

This code sample causes a parent ParticleEmitter to ParticleEmitter:Emit() particles based on how far the parent BasePart moves.

Emit Particles Over Distance

local RunService = game:GetService("RunService")
local emitter = script.Parent
local part = emitter.Parent
local PARTICLES_PER_STUD = 3
local lastPosition = part.Position
local distance = 0
local function onStep()
local displacement = part.Position - lastPosition
distance = distance + displacement.magnitude
local n = math.floor(distance * PARTICLES_PER_STUD)
emitter:Emit(n)
distance = distance - n / PARTICLES_PER_STUD
lastPosition = part.Position
end
RunService.Stepped:Connect(onStep)
emitter.Enabled = false

This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

活动