一個RayValue是一個用於存儲單一Ray的對象。與CFrameValue相似,一個RayValue的存儲射線不能在 Workspace 內的屬性窗口中查看或編輯。相反,您可以使用命令條來獲取這些對象的值。例如,您可以使用下方的一條線來
Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))
由於 Studio 中沒有任何可以編輯光線的 trivial 方法,因此,有時候會更好使用 CFrameValue 而不是 (這可以通過零件或相攝影機變更) 使用 CFrame 來重建光線。 您可以使用 Ray.new(cf.p, cf.lookVector * dist) 來重建光線,其中 cf 是 CFrame 的指
像所有 "-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
概要
屬性
方法
活動
Changed
這個事件會在 RayValue.Value 屬性變更時發生。它會在新值被存入參數對物件,而不是串代表屬性變更。
這個事件,像其他已變更的事件,可以用來追蹤雷值的變更時間和追蹤它可能變更的不同值。
對應的變更事件存在於相同的對象,例如 NumberValue 和 StringValue,取決於哪種對象類型最適合需求。
參數
變更後的值。
範例程式碼
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