Smoke
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
Classของประเภทเดียวกัน Smoke วัตถุปล่อยอนุภาคเมื่อถูกผูกกับ BasePart (เช่น Part ) หรือ Attachment ภายใน BasePart ดังกล่าวเมื่อเทียบกับคลาส ParticleEmitter ควันขาดคุณสมบัติการปรับแต่งที่แตกต่างกันมากมายและวิธีการพิเศษ เช่น ParticleEmitter.Lifetime หรือ ParticleEmitter:Emit()มันเป็นประโยชน์ที่จะสร้างเอฟเฟกต์พิเศษอย่างรวดเร็วในช่วงเวลาสั้น ๆ; สำหรับการทำงานที่ละเอียดมากขึ้นก็เป็นที่นิยมที่จะใช้ ParticleEmitter แทน
เมื่อ Smoke.Enabled ถูกสลับออก อนุภาคที่ปล่อยโดยวัตถุนี้จะยังคงแสดงผลจนกว่าอายุการใช้งานของพวกเขาจะหมดลงเมื่อวัตถุควันถูกตั้งค่าเป็น (และ/หรือ แก้ไข) อนุภาคทั้งหมดจะหายไปทันทีหากเอฟเฟกต์นี้ไม่ต้องการให้ลองซ่อนวัตถุรากในตำแหน่งที่ไกลออกไปแล้วลบควันหลังจากไม่กี่วินาทีโดยใช้ 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.
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)
สรุป
คุณสมบัติ
กำหนดสีของอนุภาคควัน
กำหนดว่าอนุภาคควันจะปล่อยหรือไม่
กำหนดวิธีที่อนุภาคควันทึบแสดงผล
กำหนดความเร็วของอนุภาคควัน
กำหนดขนาดของอนุภาคควันที่ปล่อยใหม่
มูลค่าระหว่าง 0-1 ที่ควบคุมความเร็วของเอฟเฟกต์อนุภาค
คุณสมบัติ
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.
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.
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]คุณสมบัตินี้ทำงาน ย้อนกลับ เมื่อเปรียบเทียบกับส่วน BasePart.Transparency หรือ ParticleEmitter's ParticleEmitter.Transparency : ค่า 0 เป็นสิ่งที่มองไม่เห็นสมบูรณ์ 1 เป็นสิ่งที่มองเห็นได้สมบูรณ์
เทกเจอร์ที่ Roblox ใช้สำหรับอนุภาค Smoke มีความโปร่งใสบางส่วน ดังนั้นการตั้งค่าคุณสมบัตินี้เป็น 1 ยังคงให้ความโปร่งใสในควันที่เรนเดอร์ได้
ตัวอย่างโค้ด
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 มีพฤติกรรมคล้ายกับ ParticleEmitter.Speed และ Fire.Heat : มันกำหนดความเร็วที่อนุภาคควันเคลื่อนที่ในระหว่างชีวิตของพวกเขาต้องอยู่ในช่วง [-25, 25]ค่าลบจะทำให้อนุภาคปล่อยในทิศทางด้านล่าง (-Y) ของพ่อ BasePart
เมื่อใช้เอฟเฟกต์ 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.
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.
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 มันแช่แข็งเวลา