Beam

顯示已棄用項目

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

一個 光束 對象連接兩個 Attachments ,通過在它們之間绘制一個紋理。

要顯示,光束必須是 Workspace 的後代,其 Attachment0Attachment1 屬性設為 2>Class.Arrow|Arrow2> 也是從 5>Class.Workspace5> 。

使用下面列出的屬性範圍自訂光束的外觀。也 see the 光束 指南以獲得視覺示範。

光束彎曲

光束由四個控制點形成的方形 Bézier 曲線來使用。這意味著它們不受限制地直線,而且可以通過修改 CurveSize0CurveSize1 和箭頭的方向來修改曲線。

Beam curvature diagram

範例程式碼

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

概要

屬性

方法

屬性

Attachment0

平行讀取

Class.Attach 這個光束的起源。這個附件是光束的方向,與 CurveSize0 屬性共同決定光束的位置。請參閱 光束 了解更多資訊。

For the Attachment where the beam ends, see Attachment1 .

Attachment1

平行讀取

Class.Attach 這個光束結束在。這個附件是光束的第四和最後控制點;它的方向,隨著 CurveSize1 屬性,決定了第三個控制點的位置。請參閱 光束 了解更多資訊。

對於 Attachment 中,光束的起源,請參閱 Attachment0

Brightness

平行讀取

LightInfluence 小於 1 時,會發出的光從光束中發射。此屬性預設為 1 ,可以設為任何範圍內的任何數字。增加 LightInfluence 的值會降低此屬性的效果。

平行讀取

決定光束的顏色,在其 Segments 。如果 Texture 已設定,這個顏色將適用於光束的紋理。如果沒有 Texture ,1> Class.Beam1>

這個屬性是 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 的光束只能

CurveSize0

平行讀取

Attachment0 一起,決定在光束的 Bézier 曲線中第二個控制點的位置。請參閱 光束</a> 以取得更多資訊。

這個點的位置可以由以下方程式確定:


local controlPoint2 = Beam.Attachment0.WorldPosition + (Beam.Attachment0.CFrame.RightVector * Beam.CurveSize0)

CurveSize1

平行讀取

Attachment1 一起,決定在光束的 Bézier 曲線中,第三個控制點的位置。請參閱 光束</a> 以取得更多資訊。

這個點的位置可以由以下方程式確定:


local controlPoint3 = Beam.Attachment1.WorldPosition - (Beam.Attachment1.CFrame.RightVector * Beam.CurveSize1)

Enabled

平行讀取

決定是否顯示光束。

當此屬性設為 false 時, Segments 不會顯示。

FaceCamera

平行讀取

Class.Beam 是 2D 投影在 3D 空間中存在,這意味著它可能無法從每個角度查看。 FaceCamera 屬性,當設為 true ,確保柱子總是面向1>Class.Workspace.CurrentCamera|當前Camera1>。

LightEmission

平行讀取

決定光束的顏色是否與背後的顏色混合。該值應在 0 到 1 範圍內設定。一個值為 0 使用基本混合模式,一個值為 1 使用添加式混合模式。

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

這個屬性會 因為光束照亮環境。

LightInfluence

平行讀取

決定燈光環境的照明程度,可在 0 和 1 之間調整。當 0 時,燈光環境對燈光的影響程度將不受影響。當 1 時,燈光環境對燈光的影響程度將完全受到影響。

也參閱 LightEmission ,以指定燈光的顏色是否與背後的顏色混合。

LocalTransparencyModifier

隱藏
未複製
平行讀取

Segments

平行讀取

而不是完美的彎曲,光束是由直線段組成的。 越多段,曲線的解析度就越高。 曲線 的 段數 屬性設置,用預設值 10 設置光束的組成方式。

注意,ColorTransparency 屬性需要一些特定的區

Texture

ContentId
平行讀取

展示在光束上的材質的內容 ID。如果此屬性未設定,材質將以固定線形式顯示;這也會發生在材質設置為無效的內容 ID 或圖像與材質屬性無關的圖像尚未載入時。

材質的外觀可以進一步修改其他光束屬性,包括 ColorTransparency

Class.Beam.TextureMode|TextureMode 決定了材質的大小;TextureLength 決定了材質的長度;Width0 決定了材質的寬度;1>Class.Beam.Width1|Width11> 材質的寬度;4>Class.Beam.TextureMode|TextureMode4> 材

TextureLength

平行讀取

設定光束的長紋理,取決於 TextureMode

TextureMode

平行讀取

這個屬性,在 TextureLengthTexture 重複。

當設為 Enum.TextureMode.WrapEnum.TextureMode.Static 時,材質重複將等同於光束的總長度 (以 stud 計) 乘以其 TextureLength

TextureMode diagram with Wrap mode

設為 Enum.TextureMode.Stretch 時,材質會在整個光束長度上重複 TextureLength 次。

TextureMode diagram with Stretch mode

TextureSpeed

平行讀取

決定箭頭移動速度。當此屬性為正值時,箭頭的移動速度將從 Texture 以到達 Attachment0 。當此方向為負值設定時,箭頭的移動速度將從 Attachment1 變為 2>Class.Beam.Texture

Transparency

平行讀取

決定光束在其段落中的透明度。此屬性是 NumberSequence,允許透明度可以在光束長度上變化。

考慮以下 NumberSequence,當適用於光束時,將會產生所示結果。


local numberSequence = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0), -- 磨砂
NumberSequenceKeypoint.new(0.5, 1), -- 透明
NumberSequenceKeypoint.new(1, 0), -- 磨砂
}
)

注意,光束的透明度也取決於 Segments 的數量。每個 n-1 的光束只能顯示在兩個透明度之間的交徑。因此,光束需要至少有 n

Width0

平行讀取

光束的寬度在原始位置(Attachment0 ),在 stud 上。光束的寬度會隨著線性變化至Width1 在終端(Attachment1 )。

Width1

平行讀取

光束在結束時的寬度( Attachment1 ),以 stud 計測單位。光束的寬度會隨著Width0 的原始值而線性變化(Attachment0 )。

ZOffset

平行讀取

距離、以 stud 表示,光束顯示是與 CurrentCamera 的相對位置。當 0 時,光束會在其標準位置之間的 Attachment0Attachment1 之間顯示。1> ZOffset1> 可以是正負

此屬性特別有用,以避免使用多個 Beams 之間的 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

void

光束的材質週期代表光束的材質動畫的進度。這個方法設置光束的材質週期的當前偏移;因此,它可以用來重設週期,通過將 0 作為 offset 參數傳送。

注意

  • 預期將 offset 參數值設為 0 至 1 之間的值,但也可以使用更大的值。
  • 材質週期包覆在 0 和 1,這意味著當偏移為 0 或 1 時,材質都在同一位置。
  • 如果 Texture 屬性未設定,此方法將無法執行。
  • 提升偏移會在TextureSpeed屬性的相反方向作用,這意味著它會將 тек斯特移動到TextureSpeed的方向,當Class.Beam.TextureSpeed|TextureSpeed大於 0 時。

參數

offset: number

材質週期的所需偏移。

預設值:0

返回

void

活動