RayValue

显示已弃用

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

一个RayValue是一个用于存储单个射线的对象。 与CFrameValue类似,其存储的射线不能在Studio的“属性”窗口中查看或编辑。 相反,您可以使用命令栏来获取这些对象的值。 例如,您可以使用下面的一行代码创建一个名为“Value”的新射线值在 Workspace 中。

Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))

由于 Studio 中没有任何简单的方法来编辑射线,因此您总是可以使用 CFrameValue 替换它(这可以通过零件或相镜头更改)。 您可以使用 Ray.new(cf.p, cf.lookVector * dist) 来重建射线,其中 cf 是一个给定的 CFrame ,dist 是射线的长

像所有“-Value”对象一样,这个单一的值存储在“值”属性中。改变事件对于这个(和其他对象一样)将发生,当新值存储在对象中,而不是在对象中代表属性正在更改。

代码示例

Rays, RayValue and Raycasting

local partA = workspace.PartA
local partB = workspace.PartB
local origin = partA.Position
local direction = partB.Position - partA.Position
local ray = Ray.new(origin, direction)
local rayValue = Instance.new("RayValue")
rayValue.Value = ray
rayValue.Name = "PartA-to-PartB Ray"
rayValue.Parent = workspace
-- Raycast to find any parts in between PartA and PartB
local part = workspace:FindPartOnRay(ray)
if part then
print("Hit part: " .. part:GetFullName())
else
-- This ought to never happen, as our ray starts at PartA
-- and points towards PartB, so we should always hit PartB
-- or some other part.
print("No part hit!")
end

属性

Value

读取并联

射线,已存储。

方法

活动

Changed

这个事件会触发,每当 RayValue.Value 属性发生变更。它将运行使用新值存储在参数对象中,而不是使用串来表示属性正在更改。

这个事件,像其他更改的事件,可以用来跟踪射线值更改的时间,以及它可能更改的不同值。

对于类似对象,例如 NumberValueStringValue,等级变更为适合需求的最佳对象类型。

参数

value: Ray

更改后的值。


代码示例

How to Use RayValue.Changed

local value = Instance.new("RayValue")
value.Parent = workspace
value.Changed:Connect(function(NewValue)
print(NewValue)
end)
local start = Vector3.new(0, 0, 0)
local lookAt = Vector3.new(10, 10, 10)
local ray = Ray.new(start, (lookAt - start).Unit)
value.Value = ray