一个 光束 对象连接两个 Attachments 通过在它们之间绘制一个描述。
要显示,光束必须是Workspace 的后代,其Attachment0 和Attachment1 属性设置为2>Class.Arrow|附件12> 也是从5>Class.Workspace5>下游。
使用以下列出的属性范围自定义光束的外观。也参阅光束指南以获取视觉示例。
光束弯曲
光束由四个控制点形成的方形 Bézier 曲线来实现使用。这意味着它们不受限制直线,并且可以通过修改 CurveSize0、CurveSize1 和光束的 Attachments 来修改曲线。
- P0 — 光束的开始;位置的 Attachment0 .
- P3 — 光束的终端; Attachment1 的位置
代码示例
-- 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
概要
属性
Class.附件 光束的起始位置。
Class.附件 光束在以下位置结束。
当 LightInfluence 小于 1 时,缩放光束从光束发出的光。
确定光束的颜色在其 Segments 。
以 Attachment0 和 Class.Beam.Attach0|附加0 共同确定光束的 Bézier 曲线中的第二个控制点的位置。
以 Attachment1 和 Class.Beam.Controls1|控制1 共同确定光束的 Bézier 曲线中的第三个控制点的位置。
决定是否显示光束。
确定是否为Segments 的光束总是面向相镜头,无论其方向。
确定光束的颜色与背后的颜色的比例。
决定光照环境对光束的影响程度。
设置光束的长度。
要显示在光束上的材质的内容ID。
取决于 TextureMode 的灯光材质的长纹理。
确定Texture的尺寸和重复方式。
确定Texture
确定光束在其段落中的透明度。
光束的宽度在其起始位置(Attachment0),以 stud 计。
光束的宽度到达其端(Attachment1 Class.Beam.Selection1),用钉子表示。
距离,以螺柱显示,与 CurrentCamera 的关对。
属性
Attachment0
Class.Attendance 从这个光束的起始位置。这个附件是光束的方向,与 CurveSize0 属性,决定了第二个控制点的位置。请参阅光束获取更多信息。
对于Attachment 在该光束结束时,请参阅Attachment1。
Attachment1
Class.Attendance 将光束终止在。 此附件是光束的第四个和最后一个控制点,在光束的方位,隨著 CurveSize1 屬属性,決定第三個控制點的位置。 參閱 光束 了解更多信息。
对于从 Attachment 中发生的光束,请参阅 Attachment0。
Brightness
当 LightInfluence 小于 1 时,该光从光束发出的光量会增加。 此属性默认为 1 ,可以设置为 0 到 10000 之间的任何数字。 提高 LightInfluence 的值会减少该属性值的效果。
Color
确定光束的颜色在其 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)), -- 紫色})
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)
FaceCamera
一个 Beam 是一个 2D 射线,在 3D 空间中存在,意味着它可能不能从任何角度看到。 FaceCamera 属性,当设置为 true ,确保该光线总是面向 1>Class.Workspace.CurrentCamera|当前Camera1> ,无论其方向。
LightEmission
确定光束的颜色与背后颜色的比例。它应该设置在 0 到 1 之间。一个值为 0 使用标准混合模式,一个值为 1 使用添加式混合模式。
这个属性不应与 LightInfluence ,它决定了光束如何受到环境光的影响。
这个属性会导致 不 发光环境。
LightInfluence
确定光束是否受到环境照明的影响,在 0 和 1 之间镶在 1 之间。当 0 时,光束不受环境照明的影响。当 1 时,它会受到照明作为 BasePart 的影响。
还参阅 LightEmission ,该参阅定义了灯光颜色与灯后颜色之间的混合度。
LocalTransparencyModifier
Segments
而不是完美的弯曲,光束是由直线段组成的。 чем多个段,曲线的解析度就越高。 曲线的 段数 属性设置,用默认值 10 设置要求, 段数 是多少个直线段组成的光束。
注意,Color 和 Transparency 属性需要显示正确的段数才能显示
Texture
显示在光束上的材质的内容ID。 如果此属性未设置,材质将以固定线形式显示;这也是当材质设置为无效内容ID或图像与材质关联的图像尚未加载时发生的情况。
材质的外观可以通过其他光束属性,包括 Color 和 Transparency 进一步修改。
纹理的大小是由 TextureMode 、 TextureLength 、 Width0 和 1> Class.Beam.Width1|Width11> 属性决定的。
TextureMode
此属性,与 TextureLength ,决定光束的 Texture 重复。
当设置为 Enum.TextureMode.Wrap 或 Enum.TextureMode.Static 时,材质重复将与灯柱的总长度 (以 stud 计) 分除其 TextureLength 。
设置为 Enum.TextureMode.Stretch 时,材质将在整个光束长度的 TextureLength 次重复。
Transparency
确定光束在其段落中的透明度。 此属性是一个 NumberSequence ,允许透明度可以在光束长度的各个部分上配置。
考虑以下 NumberSequence ,当应用于光束时,将产生所示结果。
local numberSequence = NumberSequence.new({NumberSequenceKeypoint.new(0, 0), -- 不透明NumberSequenceKeypoint.new(0.5, 1), -- 透明NumberSequenceKeypoint.new(1, 0), -- 不透明})
注意,光束的透明度还受到 Segments 的数量的影响。 每个段落的光束只能显示一个过渡从两个透明度之间。 因此,需要至少有 n-1 个段落才能正确显示,其
Width0
光束的宽度在其起始位置(Attachment0),在螺距上,光束的宽度将以线性方式变更为Width1 。在其端(Attachment1),光束的宽度将以线性方式变更为1> Class.Beam.Width1|宽度11>。
ZOffset
在螺柱( Class.Workspace.CurrentCamera|CurrentCamera )的距离,光束显示的相对位置与 Class.Beam.Configuration0|Configuration0 之间的位置之间的 Offset 相对于 Class.Beam.Attach0|Attach0 和 1> Class.Beam.Attach1|Attach11> 。4> ZOffset</
此属性特别有用,以避免使用多个 Beams 之间的 Attachments 时出现“Z-fighting”。
代码示例
-- 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 时,素材会在向向素材动画方向移动。
参数
纹理循环的所需偏移。