ParticleEmitter

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

ParticleEmitter 是一種特殊對象,可以在世界上發射自訂 2D 粒子。發射和渲染粒子必須在此類零件的上級對象中,或在其附屬的 Class.BasePart

當發射器為 Enabled 使用非零 Rate 時,或手動設置發射器方法 Emit 屬性,��

默認情況下,粒子面向相攝影機,但 Orientation 可以修改來重視粒子速度。

在粒子的 Lifetime

要了解更多關於創建和自訂粒子發射器的內容,請參閱粒子發射器

範例程式碼

This rather lengthy code sample shows how every property of a ParticleEmitter can be set, including NumberRange, NumberSequence and ColorSequence properties. Below is how the ParticleEmitter should look after every property is set. Try playing around with the different properties to customize how the effect looks!

Creating a Particle Emitter from Scratch

local emitter = Instance.new("ParticleEmitter")
-- Number of particles = Rate * Lifetime
emitter.Rate = 5 -- Particles per second
emitter.Lifetime = NumberRange.new(1, 1) -- How long the particles should be alive (min, max)
emitter.Enabled = true
-- Visual properties
emitter.Texture = "rbxassetid://1266170131" -- A transparent image of a white ring
-- For Color, build a ColorSequence using ColorSequenceKeypoint
local colorKeypoints = {
-- API: ColorSequenceKeypoint.new(time, color)
ColorSequenceKeypoint.new(0, Color3.new(1, 1, 1)), -- At t=0, White
ColorSequenceKeypoint.new(0.5, Color3.new(1, 0.5, 0)), -- At t=.5, Orange
ColorSequenceKeypoint.new(1, Color3.new(1, 0, 0)), -- At t=1, Red
}
emitter.Color = ColorSequence.new(colorKeypoints)
local numberKeypoints = {
-- API: NumberSequenceKeypoint.new(time, size, envelop)
NumberSequenceKeypoint.new(0, 1), -- At t=0, fully transparent
NumberSequenceKeypoint.new(0.1, 0), -- At t=.1, fully opaque
NumberSequenceKeypoint.new(0.5, 0.25), -- At t=.5, mostly opaque
NumberSequenceKeypoint.new(1, 1), -- At t=1, fully transparent
}
emitter.Transparency = NumberSequence.new(numberKeypoints)
emitter.LightEmission = 1 -- When particles overlap, multiply their color to be brighter
emitter.LightInfluence = 0 -- Don't be affected by world lighting
-- Speed properties
emitter.EmissionDirection = Enum.NormalId.Front -- Emit forwards
emitter.Speed = NumberRange.new(0, 0) -- Speed of zero
emitter.Drag = 0 -- Apply no drag to particle motion
emitter.VelocitySpread = NumberRange.new(0, 0)
emitter.VelocityInheritance = 0 -- Don't inherit parent velocity
emitter.Acceleration = Vector3.new(0, 0, 0)
emitter.LockedToPart = false -- Don't lock the particles to the parent
emitter.SpreadAngle = Vector2.new(0, 0) -- No spread angle on either axis
-- Simulation properties
local numberKeypoints2 = {
NumberSequenceKeypoint.new(0, 0), -- At t=0, size of 0
NumberSequenceKeypoint.new(1, 10), -- At t=1, size of 10
}
emitter.Size = NumberSequence.new(numberKeypoints2)
emitter.ZOffset = -1 -- Render slightly behind the actual position
emitter.Rotation = NumberRange.new(0, 360) -- Start at random rotation
emitter.RotSpeed = NumberRange.new(0) -- Do not rotate during simulation
-- Create an attachment so particles emit from the exact same spot (concentric rings)
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 5, 0) -- Move the attachment upwards a little
attachment.Parent = script.Parent
emitter.Parent = attachment

概要

屬性

方法

  • Clear():()

    清除所有已發射的粒子。

  • Emit(particleCount : number):()

    發出特定數量的粒子。

屬性

Acceleration

平行讀取

加速 屬性決定了粒子的 Speed 在其生命時間變化的方式。它是使用 Vector3 來確定加速度在全球 1>X1> / 4>Y

加速會降低粒子在 emitter 中 emitter 的速度,如果它們 emitter 在不同的 EmissionDirection 中 emitter 的速度。否則,它會加速它們。

Brightness

平行讀取

將 emitter 發射的光縮放時 ParticleEmitter.LightInfluence 為 0 時。

平行讀取

顏色 屬性決定了所有啟用的粒子的顏色。顏色適用於Texture 當渲染時,並且使用顏色 alpha 和發射器的 Class.ParticleEmitter.Transparency|Trans

變更此屬性會影響 emitter 的所有擁發器,包括目前和未來的擁發器。

當此屬性使用傾斜度 ColorSequence 時,粒子的現有顏色是由線性縮放在順序上使用粒子的年齡和總生命時間決定的。例如,如果粒子 2 秒前生成,並且具有 4 秒的總生命時間,粒子的顏色將是粒子總生命時間的 5

Drag

平行讀取

拖曳 屬性決定個別粒子在減速過程中會在每秒鐘的速度減半速度的速度。拖曳是通過將預期速度從 Class.ParticleEmitter.Speed|Speed 和任何速度從父親從 Speed 的繼承的速

EmissionDirection

平行讀取

EmissionDirection 屬性決定了從 Enum.NormalId 發射的父對象的臉。一個負的 Speed 表示粒子在正相反方向發射。1> Class.ParticleEmitter.SpreadAngle|SpreadAngle1> 進一步變化發射方向。

如果你將 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 枚:

  • – 停用翻轉書功能並使用材質作為單個靜態材質在粒子的生命時間。
  • Grid2x2 – 2×2 框架以顯示 4 個框架動畫。
  • Grid4x4 – 16 個框架的 4×4 動畫。
  • Grid8x8 – 8×8 框架以 64 個框架動畫。
平行讀取

FlipbookMode 屬性決定翻書動畫的類型。它可以是 Enum.ParticleFlipbookMode 枚:

  • 循環播放 – 持續播放所有枝狀結構,從最後一個枝狀結構開始。
  • 一擊射擊 – 播放通過動畫只有一次在粒子的生命時間。有了這個設定, FlipbookFramerate
  • PingPong – 從第一個到最後一個框架,然後從最後到第一個,重複在 Lifetime 的粒子中。
  • 隨機 – 在隨機順序中播放框架,從一個框架漸漸消失到下一個。這可能有助於在低幀率上的有機粒子 тексту裡使用,例如在漸漸消失的星星之間。

FlipbookStartRandom

平行讀取

FlipbookStartRandom 屬性決定每個粒子在動畫的隨機框架開始,而不是總是從第一個框架開始。一個使用案例是啟用此屬性並設置 FlipbookFramerate 為零,導致每個發射的粒子都是隨機從翻轉書畫紋理中選

Lifetime

平行讀取

永久值 屬性定義了新發射的粒子的最大和最小年齡。 永久值 存在在每個粒子上,因此如果此值變更,就會使已存在的粒子直到其隨機選擇的生命時間結束。 0 的生命時間會防止粒子發射。

LightEmission

平行讀取

LightEmission 屬性決定了 Texture 顏色與背後顏色的混合。一個值為 0 使用純粹的曝光模式,而一個值為 1 使用添加的曝光模式。當變更時,此屬性會立即影響所有擁有 emitter 的粒子,包括目前和未來的。

此屬性不應與 LightInfluence ซึ่งกำหนดวิธีการที่อนุภาคได้รับผลกระทบจากแสงสภาพแวดล้อม

這個屬性會 使粒子發光環境。若要完成此目標,請考慮使用 PointLight

LightInfluence

平行讀取

LightInfluence 屬性決定環境燈對個別粒子的顏色造成的環境影響。必須在 0-1 範圍內;超出此範圍的行為不是定義的。當 0 時,粒子不會受到燈光的影響 (它們保持完全的光澤); 當 1 時,粒子受到燈光的完全影��

由預設值,這個值是 1 如果使用 Studio 工具插入。如果使用 Instance.new() 插入,它是 0。

LocalTransparencyModifier

隱藏
未複製
平行讀取

LockedToPart

平行讀取

LockedToPart 屬性決定是否有粒子 "stick" 到發射源 (Class.Attach 或 Class.BasePart) 或 Class.ParticleEmitter 對於 Class.ParticleEmitter 的上一個對象。如果1> true1> ,粒子將在階段鎖定移動,如果上一個對象移動,粒子將

或者,考慮使用 VelocityInheritance 屬性,其值為 1,這可能更適合某些效果。

平行讀取

方向 屬性決定要使用的方向模式。


<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

平行讀取

RotSpeed 屬性決定了新發射的粒子對於角度每秒鐘兩度測量的隨機速度範圍。 選擇角度速度時,會隨機選擇角度速度,因此修改此屬性對於已啟用的粒子不會發生影響。 此屬性和 Rotation 對燈照物體的角度圖形影響。

極具角度速度的粒子可能會以更慢的速度或不旋轉,因為角度的旋轉速度與軟件渲染速度同步。例如,如果粒子每個框架旋轉 360 度,沒有明顯的旋轉變化。

Rotation

平行讀取

旋轉 屬性決定了新發射的粒子的旋轉程度,以度計量。正向值是在時鐘方向。此屬性通常設為 [0, 360] 以提供完全隨機的旋轉對新粒子。 RotSpeed 也會影響粒子的旋轉

此值的變更只會影響新的粒子;既有的粒子會保持原來的旋轉速度。

平行讀取

形狀 屬性設定發射器的形狀為ShapeStyleShapeInOut、1>圓柱1>或4>碟子4>。 在您選擇後,您可以調整7>Class.ParticleEmitter.Shape

平行讀取

設定粒子是否只會向外發射或向內發射。對於視覺示例,請參閱 這裡

ShapePartial

平行讀取

依賴 Shape 值,此屬性執行不同的動作:

  • 對於圓柱,它指定上圓柱的上圓率。值 0 表示上圓柱的上圓率為零,因此為圓錐。值 1 表示上圓柱無需要修正。

  • 對於光碟,它指定內徑比例。值 0 表示碟子完全關閉 (圓/橢圓),而值 1 表示發射只在碟子外側的邊緣發生。值 0 和 1 之間的值發射從邊緣層發生。

  • 對於球體,它指定球體上的半球角度,在哪些粒子發射。值 1 表示球體從整個球體發射;值 0.5 表示球體從半球體發射;值 0 表示粒子只從單一點發射。

對於視覺示例,請參閱 這裡

平行讀取

將粒子排放設為音量或表面獨立排放。視覺示例,請參閱 這裡

平行讀取

大小屬性決定世界上所有的粒子的個別生命時間上的世界尺寸。這個屬性代表每個粒子的方塊 Texture 的尺寸。它是一個 NumberSequence ,作用相同於 1> Class.ParticleEmitter.Transparency|Transparency1> 。

粒子的現有尺寸是由以下順序使用粒子的年齡和總生命值來線性衰減此順序上的粒子來決定的:如果粒子 2 秒前生成,並且有 4 秒的總生命值,粒子的尺寸將是其 50% 的

平行讀取

速度屬性決定了一個隨機的速度範圍(最低值至最大值),在每秒鐘測量為每秒測量的新粒子會發射。每個粒子的速度都是在發射時選擇的,並且在EmissionDirection中適用。負值會使粒子在向反方向旅行。

注意,變更 Speed 不會影響已啟用的粒子,牠們會保持牠們所擁有的速度。 但是, Acceleration , Drag

SpreadAngle

平行讀取

SpreadAngle 屬性決定顆粒可以發射的隨機角度。例如,如果 EmissionDirection (+ 1>Y1>),此 4>Datatype.Vector24> 將描述�

將一個軸設置為 360 會使材料在 圓圈 中發射所有方向。將兩個設置為 360 會使材料在 球體 中發射所有方向。

平行讀取

允許非一致縮放粒子的曲線控制。 值大於 0 會使粒子縮小在水平上,而不會在垂直上增長,而小於 0 會使粒子在水平上增長而不會在垂直上縮長。

Texture

ContentId
平行讀取

結構 屬性決定在粒子上渲染的圖像。這個圖像受到 ColorTransparency、1> Class.ParticleEmitter.LightInfluence|LightInfluence1> 和 <

TimeScale

平行讀取

一個值在 0 和 1 之間,控制粒子效果的速度。在 1 時,它以正常速度執行;在 0.5 時,它以半速度執行;在 0 時,它會凍結。

Transparency

平行讀取

透明度 屬性決定所有啟用的粒子在個別生命時間上的透明度。它與 Size 在粒子上時間的方式相同。在渲染方面,零值是完全可見的 (opaque) ,而一值是完全不可見的 (沒全部 所有渲染)。

粒子的現時透明度是由以下順序使用粒子的年齡和總生命值來決定的: 如果粒子 2 秒前生成,並且具有 4 秒的總生命值,粒子的透明度會是粒子在 Datatype.NumberSequ

VelocityInheritance

平行讀取

VelocityInheritance 屬性決定了子零件的 Velocity 是否會在發射時從父零件那裡繼承。值為 0 表示沒有速度會被繼承,而值為 1 表示子零件將會有正確的速度。

使用 Drag 與 Class.ParticleEmitter.Drag|Drag ,可能會出現 "shed" 粒子從移動部件拋出。

WindAffectsDrag

平行讀取

如果是,發射的粒子跟隨 Workspace.GlobalWind 矢向量力。只適用於擁有 Drag 屬性的情況。

ZOffset

平行讀取

ZOffset 屬性決定了粒子在屏幕上的前後磚塊位置,而不會改變粒子的大小。當改變時,這個屬性會影響現有和未來的粒子。注意,這個屬性接受浮動值;它不是 GuiObject.ZIndex (一個整數) 的。

正向值將粒子移動到相機附近,負向值將粒子移動到遠處。足夠負向值可以使粒子在父親部分內或外部渲染。

方法

Clear

()

清除方法會立即清除 Class.ParticleEmitter 通過其自然排放 (Class.ParticleEmitter.Rate|Rate) 上的 Class.ParticleEmitter ,或通過 2>Class.ParticleEmitter:emit()|emit()2> 發出的。


返回

()

範例程式碼

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

()

發射方法會導致 Class.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

活動