Beam

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

一个 光束 对象连接两个 Attachments 通过在它们之间绘制一个描述。

要显示,光束必须是Workspace 的后代,其Attachment0Attachment1 属性设置为2>Class.Arrow|附件12> 也是从5>Class.Workspace5>下游。

使用以下列出的属性范围自定义光束的外观。也参阅光束指南以获取视觉示例。

光束弯曲

光束由四个控制点形成的方形 Bézier 曲线来实现使用。这意味着它们不受限制直线,并且可以通过修改 CurveSize0CurveSize1 和光束的 Attachments 来修改曲线。

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.Attendance 从这个光束的起始位置。这个附件是光束的方向,与 CurveSize0 属性,决定了第二个控制点的位置。请参阅光束获取更多信息。

对于Attachment 在该光束结束时,请参阅Attachment1

Attachment1

读取并联

Class.Attendance 将光束终止在。 此附件是光束的第四个和最后一个控制点,在光束的方位,隨著 CurveSize1 屬属性,決定第三個控制點的位置。 參閱 光束 了解更多信息。

对于从 Attachment 中发生的光束,请参阅 Attachment0

Brightness

读取并联

LightInfluence 小于 1 时,该光从光束发出的光量会增加。 此属性默认为 1 ,可以设置为 0 到 10000 之间的任何数字。 提高 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 曲线中的第二个控制点的位置。见 光束 了解更多信息。

这个点的位置可以通过以下方程来确定:


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

读取并联

一个 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 设置要求, 段数 是多少个直线段组成的光束。

注意,ColorTransparency 属性需要显示正确的段数才能显示

Texture

ContentId
读取并联

显示在光束上的材质的内容ID。 如果此属性未设置,材质将以固定线形式显示;这也是当材质设置为无效内容ID或图像与材质关联的图像尚未加载时发生的情况。

材质的外观可以通过其他光束属性,包括 ColorTransparency 进一步修改。

纹理的大小是由 TextureModeTextureLengthWidth0 和 1> Class.Beam.Width1|Width11> 属性决定的。

TextureLength

读取并联

取决于 TextureMode 的灯光材质的长纹理。

TextureMode

读取并联

此属性,与 TextureLength ,决定光束的 Texture 重复。

当设置为 Enum.TextureMode.WrapEnum.TextureMode.Static 时,材质重复将与灯柱的总长度 (以 stud 计) 分除其 TextureLength

TextureMode diagram with Wrap mode

设置为 Enum.TextureMode.Stretch 时,材质将在整个光束长度的 TextureLength 次重复。

TextureMode diagram with Stretch mode

TextureSpeed

读取并联

确定Texture。当此属性为正值时,光束的纹理将从Attachment0Attachment1。 此方向可通过将此属性设置为负数来反向。

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

Width1

读取并联

光束的宽度到达其端(Attachment1),以 stud 计。光束的宽度从Width0 的原始 stud 开始变化(Attachment0)。

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

代码示例

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高于 0 时,素材会在向向素材动画方向移动。

参数

offset: number

纹理循环的所需偏移。

默认值:0

返回

void

活动