Beam
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
วัตถุ ลําแสง เชื่อมต่อสอง Attachments โดยวาดเทกเจอร์ระหว่างพวกเขา
เพื่อแสดงผลลัพธ์ ลําแสงจะต้องเป็นลูกหลานของ Workspace ด้วยคุณสมบัติ Attachment0 และ Attachment1 ที่กําหนดเป็น Attachments และลงมาจาก Workspace เช่นกัน
ลักษณะของลําแสงสามารถปรับแต่งได้โดยใช้ช่วงของคุณสมบัติที่อธิบายไว้ด้านล่าง ดูคู่มือ ลําแสง สําหรับตัวอย่างภาพกราฟิก
ความโค้งของลําแสง
ลําแสงจะได้รับการกำหนดค่าให้ใช้เส้นโค้ง Bézier ก้อนเดียวที่สร้างขึ้นจากจุดควบคุมสี่จุดซึ่งหมายความว่าพวกเขาไม่ถูกจำกัดให้อยู่ในเส้นตรงและความโค้งของลำแสงสามารถปรับเปลี่ยนได้โดยการเปลี่ยน CurveSize0 , CurveSize1 และทิศทางของลำแสง Attachments
- P0 — จุดเริ่มต้นของลำแสง; ตำแหน่งของ Attachment0
- P3 — จุดสิ้นสุดของลำแสง; ตำแหน่งของ Attachment1

ตัวอย่างโค้ด
This code sample demonstrates how a Beam effect can be created from scratch by creating a Beam, setting all of its properties and configuring it's Attachments.
-- create attachments
local att0 = Instance.new("Attachment")
local att1 = Instance.new("Attachment")
-- parent to terrain (can be part instead)
att0.Parent = workspace.Terrain
att1.Parent = workspace.Terrain
-- position attachments
att0.Position = Vector3.new(0, 10, 0)
att1.Position = Vector3.new(0, 10, 10)
-- create beam
local beam = Instance.new("Beam")
beam.Attachment0 = att0
beam.Attachment1 = att1
-- appearance properties
beam.Color = ColorSequence.new({ -- a color sequence shifting from white to blue
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 255, 255)),
})
beam.LightEmission = 1 -- use additive blending
beam.LightInfluence = 0 -- beam not influenced by light
beam.Texture = "rbxasset://textures/particles/sparkles_main.dds" -- a built in sparkle texture
beam.TextureMode = Enum.TextureMode.Wrap -- wrap so length can be set by TextureLength
beam.TextureLength = 1 -- repeating texture is 1 stud long
beam.TextureSpeed = 1 -- slow texture speed
beam.Transparency = NumberSequence.new({ -- beam fades out at the end
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0.8, 0),
NumberSequenceKeypoint.new(1, 1),
})
beam.ZOffset = 0 -- render at the position of the beam without offset
-- shape properties
beam.CurveSize0 = 2 -- create a curved beam
beam.CurveSize1 = -2 -- create a curved beam
beam.FaceCamera = true -- beam is visible from every angle
beam.Segments = 10 -- default curve resolution
beam.Width0 = 0.2 -- starts small
beam.Width1 = 2 -- ends big
-- parent beam
beam.Enabled = true
beam.Parent = att0
สรุป
คุณสมบัติ
แสงที่มาจาก Attachment ที่มาจาก
The Attachment ลำแสงสิ้นสุดที่
ขยายแสงที่ปล่อยจากลําแสงเมื่อ LightInfluence น้อยกว่า 1
กำหนดสีของลำแสงข้าม Segments ของมัน
กำหนด, ร่วมกับ Attachment0 , ตำแหน่งจุดควบคุมที่สองในความโค้งของลําแสง Bézier
กำหนด, ร่วมกับ Attachment1 , ตำแหน่งจุดควบคุมที่สามในความโค้งของลําแสง Bézier
กำหนดว่าลําแสงมองเห็นได้หรือไม่
กำหนดว่าลำแสงจะเผชิญกับกล้องเสมอไม่ว่าจะเป็นทิศทางใดก็ตาม Segments
กำหนดว่าสีของลําแสงจะผสมกับสีที่อยู่เบื้องหลังมันในระดับใด
กำหนดระดับที่ลําแสงได้รับอิทธิพลจากแสงของสภาพแวดล้อม
ตั้งจำนวนส่วนตรงที่ลำแสงประกอบขึ้น
ID เนื้อหาของเทกเจอร์ที่จะแสดงบนลำแสง
ตั้งค่าความยาวของเทกเจอร์ของลำแสงขึ้นอยู่กับ TextureMode
กำหนดวิธีที่เครื่องชั่ง Texture จะเพิ่มขึ้นและทำซ้ำ
กำหนดความเร็วที่ภาพ Texture เคลื่อนที่ไปตามลําแสง
กำหนดความโปร่งใสของลําแสงในแต่ละส่วน
ความกว้างของลําแสงที่จุดเริ่มต้น ( Attachment0 ), ในสตัด
ความกว้างของลําแสงที่ปลาย ( Attachment1 ), ในสตัด
ระยะห่างในสตัด, การแสดงลำแสงจะถูกเลื่อนเมื่อเทียบกับ CurrentCamera
วิธีการ
ตั้งค่าความเบี่ยงปัจจุบันของรอบเทกเจอร์ของลําแสง
คุณสมบัติ
Attachment0
แสงที่มาจาก Attachment ที่มาจากส่วนแนบนี้เป็นจุดควบคุมแรกบนโค้ง Bézier ทรงกลมของลำแสง; การจัดเรียงของมันร่วมกับคุณสมบัติ CurveSize0 จะกำหนดตำแหน่งของจุดควบคุมที่สองดู ลําแสง สําหรับรายละเอียดเพิ่มเติม
สำหรับ Attachment ที่ลำแสงสิ้นสุดลงดูที่ Attachment1
Attachment1
The Attachment ลำแสงสิ้นสุดที่ส่วนแนบนี้เป็นจุดควบคุมที่สี่และสุดท้ายบนสมการ Bézier ทรงกลมของลำแสง; การจัดเรียงของมันร่วมกับคุณสมบัติ CurveSize1 จะกำหนดตำแหน่งของจุดควบคุมที่สามดู ลําแสง สําหรับรายละเอียดเพิ่มเติม
สำหรับ Attachment ที่ลำแสงมาจาก, ดู Attachment0 .
Brightness
ขยายแสงที่ปล่อยจากลําแสงเมื่อ LightInfluence น้อยกว่า 1คุณสมบัตินี้คือ 1 โดยค่าเริ่มต้นและสามารถตั้งค่าเป็นหมายเลขใดก็ได้ภายในช่วง 0 ถึง 10000การเพิ่มมูลค่าของ LightInfluence ลดผลกระทบของมูลค่าของคุณสมบัตินี้
Color
กำหนดสีของลำแสงข้าม Segments ของมันหาก Texture ถูกตั้งค่าไว้ สีนี้จะถูกใช้กับเทกเจอร์ของลําแสงหากไม่มี Texture ถูกตั้งค่า แถบสีของ Beam จะปรากฏเป็นเส้นตรงสีตามคุณสมบัตินี้
คุณสมบัตินี้เป็น ColorSequence ที่ช่วยให้สีสามารถกำหนดค่าได้ตามความยาวของลำแสงพิจารณาต่อไปนี้ ColorSequence ซึ่งเมื่อใช้กับลำแสงจะให้ผลลัพธ์ที่ปรากฏบนภาพ
local colorSequence = ColorSequence.new({ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)), -- สีแดงColorSequenceKeypoint.new(0.5, Color3.fromRGB(0, 188, 203)), -- สีฟ้าColorSequenceKeypoint.new(1, Color3.fromRGB(196, 0, 255)), -- สีม่วง})

โปรดทราบว่าการเปลี่ยนสีของลำแสงขึ้นอยู่กับจํานวน Segments ของ Beam ที่มีแต่ละส่วนของลำแสงสามารถแสดงการเปลี่ยนแปลงระหว่างสองสีได้เท่านั้นดังนั้น a Beam จะต้องมีอย่างน้อย n-1 ส่วนเพื่อให้สีแสดงอย่างถูกต้องโดยที่ n เป็นจํานวน ColorSequenceKeypoints ใน ColorSequence
CurveSize0
กําหนด, ร่วมกับ Attachment0 , ตําแหน่งจุดควบคุมที่สองในความโค้งของลําแสง Bézier ดู ลําแสง สําหรับรายละเอียดเพิ่มเติม
ตำแหน่งของจุดนี้สามารถกำหนดได้โดยสมการต่อไปนี้:
local controlPoint2 = Beam.Attachment0.WorldPosition + (Beam.Attachment0.CFrame.RightVector * Beam.CurveSize0)
CurveSize1
กําหนด, ร่วมกับ Attachment1 , ตําแหน่งจุดควบคุมที่สามในความโค้งของลําแสง Bézier ดู ลําแสง สําหรับรายละเอียดเพิ่มเติม
ตำแหน่งของจุดนี้สามารถกำหนดได้โดยสมการต่อไปนี้:
local controlPoint3 = Beam.Attachment1.WorldPosition - (Beam.Attachment1.CFrame.RightVector * Beam.CurveSize1)
Enabled
กำหนดว่าลําแสงมองเห็นได้หรือไม่
เมื่อคุณสร้างคุณสมบัตินี้เป็น false, ลําแสงของ Segments จะไม่แสดงขึ้น
FaceCamera
A Beam เป็นการฉายภาพ 2D ที่มีอยู่ในพื้นที่ 3D ซึ่งหมายความว่ามันอาจไม่สามารถมองเห็นได้จากทุกมุมคุณสมบัติ FaceCamera เมื่อตั้งค่าเป็น true จะตรวจสอบให้แสงสว่างเสมอชี้ไปที่ CurrentCamera ไม่ว่าจะเป็นทิศทางใด
LightEmission
กำหนดว่าสีของลําแสงจะผสมกับสีที่อยู่เบื้องหลังมันในระดับใดควรตั้งค่าในช่วง 0 ถึง 1ค่า 0 ใช้โหมดการผสมปกติและค่า 1 ใช้การผสมเพิ่มเติม
คุณสมบัตินี้ไม่ควรสับสนกับ LightInfluence ซึ่งกำหนดวิธีที่ลำแสงได้รับผลกระทบจากแสงสิ่งแวดล้อม
คุณสมบัตินี้ไม่ทํา ไม่ ทําให้ลําแสงส่องแสงในสภาพแวดล้อม
LightInfluence
กำหนดระดับที่ลําแสงได้รับอิทธิพลจากแสงสว่างของสภาพแวดล้อมระหว่าง 0 และ 1เมื่อ 0 ลำแสงจะไม่ได้รับผลกระทบจากแสงของสภาพแวดล้อมเมื่อ 1 จะได้รับผลกระทบเต็มรูปแบบจากแสงเช่นเดียวกับที่ BasePart จะเป็น
ดูเพิ่มเติม LightEmission ซึ่งระบุถึงระดับที่สีของลําแสงจะผสมกับสีด้านหลัง
LocalTransparencyModifier
Segments
แทนที่จะเป็นเส้นโค้งที่สมบูรณ์แบบแสงจะประกอบด้วยส่วนตรงยิ่งมีส่วนมากขึ้น ความละเอียดของโค้งก็จะยิ่งสูงขึ้นคุณสมบัติ ส่วน กำหนดจำนวนส่วนตรงที่ลำแสงประกอบด้วยมีค่าเริ่มต้นคือ 10
โปรดทราบว่าคุณสมบัติ Color และ Transparency ต้องมีจํานวนส่วนที่กําหนดไว้ในการแสดงอย่างถูกต้องเนื่องจากแต่ละส่วนสามารถแสดงการเปลี่ยนแปลงระหว่างสองสีหรือความโปร่งใสได้เท่านั้นดังนั้น a Beam จำเป็นต้องมีอย่างน้อย n-1 ส่วนเพื่อแสดงอย่างถูกต้องซึ่ง n เป็นจํานวนจุดที่เกี่ยวข้องกับคีย์พอยท์ที่เกี่ยวข้องกับลําแสง Color และ Transparency
Texture
ID เนื้อหาของเทกเจอร์ที่จะแสดงบนลำแสงหากคุณสมบัตินี้ไม่ได้ถูกกำหนด ลำแสงจะแสดงเป็นเส้นตัวหนา; สิ่งนี้เกิดขึ้นเมื่อเทกเจอร์ถูกตั้งค่าเป็น ID เนื้อหาที่ไม่ถูกต้องหรือภาพที่เกี่ยวข้องกับเทกเจอร์ยังไม่โหลด
ลักษณะของเทกเจอร์สามารถปรับแต่งได้เพิ่มเติมโดยคุณสมบัติลําแสงอื่น ๆ รวมถึง Color และ Transparency
การปรับขนาดของเทกเจอร์จะถูกกำหนดโดย TextureMode , TextureLength , Width0 และ Width1 คุณสมบัติ
TextureMode
คุณสมบัตินี้ร่วมกับ TextureLength กำหนดวิธีที่ลําแสง Texture ทำซ้ำ
เมื่อตั้งค่าเป็น Enum.TextureMode.Wrap หรือ Enum.TextureMode.Static เทกเจอร์การทำซ้ำจะเท่ากับความยาวทั้งหมดของลําแสง (ใน studs) หารด้วย TextureLength ของมัน

เมื่อตั้งค่าเป็น Enum.TextureMode.Stretch เทกเจอร์จะทำซ้ำ TextureLength ครั้งในระยะทั้งหมดของลำแสง

TextureSpeed
กำหนดความเร็วที่ภาพ Texture เคลื่อนที่ไปตามลําแสงเมื่อคุณสมบัตินี้เป็นค่าบวก เทกเจอร์ของลําแสงจะย้ายจาก Attachment0 เป็น Attachment1ทิศทางนี้สามารถย้อนกลับได้โดยการตั้งค่าคุณสมบัตินี้เป็นเลขลบ
Transparency
กำหนดความโปร่งใสของลําแสงในแต่ละส่วนคุณสมบัตินี้เป็น NumberSequence ที่ช่วยให้ความโปร่งใสสามารถกำหนดค่าได้ตามความยาวของลำแสง
พิจารณาต่อไปนี้ NumberSequence ผลการค้นหา
local numberSequence = NumberSequence.new({NumberSequenceKeypoint.new(0, 0), -- ทึบNumberSequenceKeypoint.new(0.5, 1), -- โปร่งใสNumberSequenceKeypoint.new(1, 0), -- ทึบ})

โปรดทราบว่าความโปร่งใสของลําแสงยังขึ้นอยู่กับจํานวน Segmentsแต่ละส่วนของลำแสงสามารถแสดงการเปลี่ยนแปลงระหว่างสองความโปร่งใสได้เท่านั้นดังนั้นลำแสงจะต้องมีอย่างน้อย n-1 ส่วนในการแสดงอย่างถูกต้องโดยที่ n เป็นจํานวนของ NumberSequenceKeypoints ใน NumberSequence
Width0
ความกว้างของลําแสงที่จุดเริ่มต้น ( Attachment0 ), ในสตัด ความกว้างของลําแสงจะเปลี่ยนเป็นเส้นตรงไปยัง Width1 สตัดที่ปลายของมัน ( Attachment1 )
Width1
ความกว้างของลําแสงที่ปลาย ( Attachment1 ), ในสตัด ความกว้างของลําแสงจะเปลี่ยนเป็นเส้นตรงจาก Width0 สตัดที่ต้นกําเนิดของลําแสง ( Attachment0 ).
ZOffset
ระยะห่างในสตัด, การแสดงลำแสงจะถูกเลื่อนเมื่อเทียบกับ CurrentCameraเมื่อ 0 ลำแสงจะแสดงในตำแหน่งมาตรฐานระหว่าง Attachment0 และ Attachment1 ZOffset สามารถเป็นบวกหรือเป็นลบได้
คุณสมบัตินี้มีประโยชน์เป็นพิเศษในการหลีกเลี่ยง "Z‑fighting" เมื่อใช้หลาย Beams ระหว่างเดียวกัน Attachments
ตัวอย่างโค้ด
This code sample uses the Beam.ZOffset property to layer multiple beams between the same attachments.
-- Create beams
local beam1 = Instance.new("Beam")
beam1.Color = ColorSequence.new(Color3.new(1, 0, 0))
beam1.FaceCamera = true
beam1.Width0 = 3
beam1.Width1 = 3
local beam2 = Instance.new("Beam")
beam2.Color = ColorSequence.new(Color3.new(0, 1, 0))
beam2.FaceCamera = true
beam2.Width0 = 2
beam2.Width1 = 2
local beam3 = Instance.new("Beam")
beam3.Color = ColorSequence.new(Color3.new(0, 0, 1))
beam3.FaceCamera = true
beam3.Width0 = 1
beam3.Width1 = 1
-- Layer beams
beam1.ZOffset = 0
beam2.ZOffset = 0.01
beam3.ZOffset = 0.02
-- Create attachments
local attachment0 = Instance.new("Attachment")
attachment0.Position = Vector3.new(0, -10, 0)
attachment0.Parent = workspace.Terrain
local attachment1 = Instance.new("Attachment")
attachment1.Position = Vector3.new(0, 10, 0)
attachment1.Parent = workspace.Terrain
-- Connect beams
beam1.Attachment0 = attachment0
beam1.Attachment1 = attachment1
beam2.Attachment0 = attachment0
beam2.Attachment1 = attachment1
beam3.Attachment0 = attachment0
beam3.Attachment1 = attachment1
-- Parent beams
beam1.Parent = workspace
beam2.Parent = workspace
beam3.Parent = workspace
วิธีการ
SetTextureOffset
การเลื่อนของรอบของเทกเจอร์ของลําแสงแทนที่ความคืบหน้าของแอนิเมชั่นเทกเจอร์ของมันวิธีนี้ตั้งค่าออฟเซ็ตปัจจุบันของรอบของเทกเจอร์ของลำแสง; แอนิเมชัน0 เป็นพารามิเตอร์ offset
บันทึก
- พารามิเตอร์ที่ให้ไว้ offset คาดว่าจะเป็นค่าระหว่าง 0 และ 1 แต่สามารถใช้ค่าที่สูงกว่าได้
- วงจรเทกเจอร์ห่อที่ 0 และ 1 ซึ่งหมายความว่าเทกเจอร์อยู่ในตำแหน่งเดียวกันเมื่อค่าส่วนลบอยู่ที่ 0 หรือ 1
- หากคุณสมบัติ Texture ตั้งค่าวิธีนี้จะไม่ทำอะไรเลย
- การเพิ่มค่าส่วนลบจะทำงานในทิศทางตรงกันข้ามกับคุณสมบัติ TextureSpeed ซึ่งหมายความว่าจะเคลื่อนย้ายเทกเจอร์ในทิศทางตรงกันข้ามกับทิศทางที่เทกเจอร์เคลื่อนไหวเมื่อ TextureSpeed มากกว่า 0
พารามิเตอร์
ค่าเบี่ยงที่ต้องการของวงจรเทกเจอร์