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!
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
概要
屬性
測量所有活動的粒子的全球速度加速,以每秒鐘計。
將 emitter 發射的光縮放時 ParticleEmitter.LightInfluence 為 0 時。
決定所有個別的粒子的顏色。
決定粒子在減速時會在速度的一半程度減速。
決定物體發射的面。
決定是否從 emitter 發射的粒子輸出。
決定每秒在框架中動畫翻轉書簿的材質。
如果 Texture 與翻轉書不相容,會顯示錯誤訊息。
決定翻書內容的紋理。必須為None、Grid2x2、Grid4x4、或Grid8x8。
決定翻書動畫的類型。必須是 Loop、OneShot、PingPong 或隨機。
決定要在哪個時間點開始動畫,而不是一直在每個畫素零點開始。
為新發射的粒子設定一個隨機的年齡範圍。
決定背後的顏色是否要與粒子的顏色混合。
決定環境光對哪些粒子受到影響。
決定是否要將粒子固定在發射的零件上。
指定如何對準粒子。
決定每秒鐘發射的粒子數。
測量以秒鐘速度測量發射的粒子的角速度範圍。
對新發射的粒子進行度量,以決定其旋轉範圍。
設定發射器的形狀為「方方塊」、「球體」、「圓柱體」或「碟子」。
設定粒子是否只會向外發射或向內發射。
影響圓柱、碟子、球體和箱子形狀的粒子排放。
將粒子排放設為音量或表面獨立排放。
決定個別粒子的生命時間。
決定一個隨機的速度範圍(最低值至最大值),在每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測量為每秒鐘測
決定粒子在隨機發射的角度。
允許非一致粒子的擴大和縮小,以及在其生命時間內對曲線進行控制。
決定物體上的圖像。
值 0 和 1 之間,控制粒子效果的速度。
決定粒子在其個別的生命時間上的透明度。
決定父元素孫的速度來自親子孫的速度時,子孫的速度是否會被継承。
是否發射的粒子跟隨 Workspace.GlobalWind 向量力。
決定粒子的前進/後退位置;用於控制粒子在頂部/底部渲染。
屬性
Acceleration
加速 屬性決定了粒子的 Speed 在其生命時間變化的方式。它是使用 Vector3 來確定加速度在全球 1>X1> / 4>Y
加速會降低粒子在 emitter 中 emitter 的速度,如果它們 emitter 在不同的 EmissionDirection 中 emitter 的速度。否則,它會加速它們。
Color
顏色 屬性決定了所有啟用的粒子的顏色。顏色適用於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
FlipbookLayout 屬性決定結構圖的內容。它可以是 Enum.ParticleFlipbookLayout 枚:
- 無 – 停用翻轉書功能並使用材質作為單個靜態材質在粒子的生命時間。
- Grid2x2 – 2×2 框架以顯示 4 個框架動畫。
- Grid4x4 – 16 個框架的 4×4 動畫。
- Grid8x8 – 8×8 框架以 64 個框架動畫。
FlipbookMode
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,這可能更適合某些效果。
Orientation
方向 屬性決定要使用的方向模式。
<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>
導向 | 粒子行為 |
---|
RotSpeed
RotSpeed 屬性決定了新發射的粒子對於角度每秒鐘兩度測量的隨機速度範圍。 選擇角度速度時,會隨機選擇角度速度,因此修改此屬性對於已啟用的粒子不會發生影響。 此屬性和 Rotation 對燈照物體的角度圖形影響。
極具角度速度的粒子可能會以更慢的速度或不旋轉,因為角度的旋轉速度與軟件渲染速度同步。例如,如果粒子每個框架旋轉 360 度,沒有明顯的旋轉變化。
Rotation
旋轉 屬性決定了新發射的粒子的旋轉程度,以度計量。正向值是在時鐘方向。此屬性通常設為 [0, 360] 以提供完全隨機的旋轉對新粒子。 RotSpeed 也會影響粒子的旋轉
此值的變更只會影響新的粒子;既有的粒子會保持原來的旋轉速度。
形狀 屬性設定發射器的形狀為ShapeStyle、ShapeInOut、1>圓柱1>或4>碟子4>。 在您選擇後,您可以調整7>Class.ParticleEmitter.Shape
ShapePartial
依賴 Shape 值,此屬性執行不同的動作:
對於圓柱,它指定上圓柱的上圓率。值 0 表示上圓柱的上圓率為零,因此為圓錐。值 1 表示上圓柱無需要修正。
對於光碟,它指定內徑比例。值 0 表示碟子完全關閉 (圓/橢圓),而值 1 表示發射只在碟子外側的邊緣發生。值 0 和 1 之間的值發射從邊緣層發生。
對於球體,它指定球體上的半球角度,在哪些粒子發射。值 1 表示球體從整個球體發射;值 0.5 表示球體從半球體發射;值 0 表示粒子只從單一點發射。
對於視覺示例,請參閱 這裡。
Size
大小屬性決定世界上所有的粒子的個別生命時間上的世界尺寸。這個屬性代表每個粒子的方塊 Texture 的尺寸。它是一個 NumberSequence ,作用相同於 1> Class.ParticleEmitter.Transparency|Transparency1> 。
粒子的現有尺寸是由以下順序使用粒子的年齡和總生命值來線性衰減此順序上的粒子來決定的:如果粒子 2 秒前生成,並且有 4 秒的總生命值,粒子的尺寸將是其 50% 的
Speed
速度屬性決定了一個隨機的速度範圍(最低值至最大值),在每秒鐘測量為每秒測量的新粒子會發射。每個粒子的速度都是在發射時選擇的,並且在EmissionDirection中適用。負值會使粒子在向反方向旅行。
注意,變更 Speed 不會影響已啟用的粒子,牠們會保持牠們所擁有的速度。 但是, Acceleration , Drag 和
SpreadAngle
SpreadAngle 屬性決定顆粒可以發射的隨機角度。例如,如果 EmissionDirection 是 上 (+ 1>Y1>),此 4>Datatype.Vector24> 將描述�
將一個軸設置為 360 會使材料在 圓圈 中發射所有方向。將兩個設置為 360 會使材料在 球體 中發射所有方向。
Texture
結構 屬性決定在粒子上渲染的圖像。這個圖像受到 Color 、Transparency、1> Class.ParticleEmitter.LightInfluence|LightInfluence1> 和 <
Transparency
透明度 屬性決定所有啟用的粒子在個別生命時間上的透明度。它與 Size 在粒子上時間的方式相同。在渲染方面,零值是完全可見的 (opaque) ,而一值是完全不可見的 (沒全部 所有渲染)。
粒子的現時透明度是由以下順序使用粒子的年齡和總生命值來決定的: 如果粒子 2 秒前生成,並且具有 4 秒的總生命值,粒子的透明度會是粒子在 Datatype.NumberSequ
VelocityInheritance
VelocityInheritance 屬性決定了子零件的 Velocity 是否會在發射時從父零件那裡繼承。值為 0 表示沒有速度會被繼承,而值為 1 表示子零件將會有正確的速度。
使用 Drag 與 Class.ParticleEmitter.Drag|Drag ,可能會出現 "shed" 粒子從移動部件拋出。
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.
local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end
Emit
發射方法會導致 Class.ParticleEmitter 立即發射指定的粒子數。
參數
要發射的粒子數量。
返回
範例程式碼
This code sample causes a parent ParticleEmitter to ParticleEmitter:Emit() particles based on how far the parent BasePart moves.
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.
local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end