Beam

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

วัตถุ ลําแสง เชื่อมต่อสอง Attachments โดยวาดเทกเจอร์ระหว่างพวกเขา

เพื่อแสดงผลลัพธ์ ลําแสงจะต้องเป็นลูกหลานของ Workspace ด้วยคุณสมบัติ Attachment0 และ Attachment1 ที่กําหนดเป็น Attachments และลงมาจาก Workspace เช่นกัน

ลักษณะของลําแสงสามารถปรับแต่งได้โดยใช้ช่วงของคุณสมบัติที่อธิบายไว้ด้านล่าง ดูคู่มือ ลําแสง สําหรับตัวอย่างภาพกราฟิก

ความโค้งของลําแสง

ลําแสงจะได้รับการกำหนดค่าให้ใช้เส้นโค้ง Bézier ก้อนเดียวที่สร้างขึ้นจากจุดควบคุมสี่จุดซึ่งหมายความว่าพวกเขาไม่ถูกจำกัดให้อยู่ในเส้นตรงและความโค้งของลำแสงสามารถปรับเปลี่ยนได้โดยการเปลี่ยน CurveSize0 , CurveSize1 และทิศทางของลำแสง Attachments

  • P0 — จุดเริ่มต้นของลำแสง; ตำแหน่งของ Attachment0
  • P1CurveSize0 สตัดออกจาก Attachment0 ในทิศทางบวก X ของ Attachment0
  • P2CurveSize1 สตัดออกจาก Attachment1 ในทิศทางลบ X ของ Attachment1
  • P3 — จุดสิ้นสุดของลำแสง; ตำแหน่งของ Attachment1
Beam curvature diagram

ตัวอย่างโค้ด

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.

Creating a Beam From Scratch

-- 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

  • อ่านพร้อมๆ กัน

    กำหนดว่าสีของลําแสงจะผสมกับสีที่อยู่เบื้องหลังมันในระดับใด

  • อ่านพร้อมๆ กัน

    กำหนดระดับที่ลําแสงได้รับอิทธิพลจากแสงของสภาพแวดล้อม

  • ซ่อนอยู่
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน
  • อ่านพร้อมๆ กัน

    ตั้งจำนวนส่วนตรงที่ลำแสงประกอบขึ้น

  • Texture:ContentId
    อ่านพร้อมๆ กัน

    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 ลดผลกระทบของมูลค่าของคุณสมบัตินี้

อ่านพร้อมๆ กัน

กำหนดสีของลำแสงข้าม 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

ContentId
อ่านพร้อมๆ กัน

ID เนื้อหาของเทกเจอร์ที่จะแสดงบนลำแสงหากคุณสมบัตินี้ไม่ได้ถูกกำหนด ลำแสงจะแสดงเป็นเส้นตัวหนา; สิ่งนี้เกิดขึ้นเมื่อเทกเจอร์ถูกตั้งค่าเป็น ID เนื้อหาที่ไม่ถูกต้องหรือภาพที่เกี่ยวข้องกับเทกเจอร์ยังไม่โหลด

ลักษณะของเทกเจอร์สามารถปรับแต่งได้เพิ่มเติมโดยคุณสมบัติลําแสงอื่น ๆ รวมถึง Color และ Transparency

การปรับขนาดของเทกเจอร์จะถูกกำหนดโดย TextureMode , TextureLength , Width0 และ Width1 คุณสมบัติ

TextureLength

อ่านพร้อมๆ กัน

ตั้งค่าความยาวของเทกเจอร์ของลำแสงขึ้นอยู่กับ TextureMode

TextureMode

อ่านพร้อมๆ กัน

คุณสมบัตินี้ร่วมกับ TextureLength กำหนดวิธีที่ลําแสง Texture ทำซ้ำ

เมื่อตั้งค่าเป็น Enum.TextureMode.Wrap หรือ Enum.TextureMode.Static เทกเจอร์การทำซ้ำจะเท่ากับความยาวทั้งหมดของลําแสง (ใน studs) หารด้วย TextureLength ของมัน

TextureMode diagram with Wrap mode

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

TextureMode diagram with Stretch mode

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.

Layering Beams

-- 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

พารามิเตอร์

offset: number

ค่าเบี่ยงที่ต้องการของวงจรเทกเจอร์

ค่าเริ่มต้น: 0

ส่งค่ากลับ

()

อีเวนต์