RayValue
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Một RayValue là một đối tượng có mục đích lưu trữ một chiếc Ray duy nhất.Tương tự như CFrameValue, tia lưu của một RayValue không thể được xem hoặc chỉnh sửa trong cửa sổ Thuộc tính trong studio.Thay vào đó, sử dụng thanh Command để lấy và đặt giá trị của các đối tượng này.Ví dụ, bạn có thể sử dụng một dòng như dưới đây để tạo một RayValue mới có tên là "Value" trong Workspace .Nó tạo ra một tia tại (0, 50, 0) và nó hướng về phía tích cực-X.
Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))
Vì không có cách đơn giản để chỉnh sửa các tia trong Studio, đôi khi tốt hơn là sử dụng một CFrameValue thay thế (có thể được thay đổi thông qua một phần hoặc máy ảnh).Bạn có thể xây dựng lại một tia từ một CFrame bằng cách sử dụng Ray.new(cf.p, cf.lookVector * dist) , nơi cf là một CFrame đã cho và dist là chiều dài của Ray bạn muốn xây dựng.
Giống như tất cả các đối tượng "-Value", giá trị duy nhất này được lưu trong tính chất Value.Sự kiện đã thay đổi cho sự kiện này (và các đối tượng khác giống như nó) sẽ bắn với giá trị mới được lưu trong đối tượng, thay vì một chuỗi đại diện cho thuộc tính đang thay đổi.
Mẫu mã
Ví dụ mã này cho thấy việc xây dựng một Ray, lưu Ray trong một RayValue và Raycasting để tìm các phần khác giữa hai phần có tên là "PartA" và "PartB".
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
-- Phát sóng để tìm bất kỳ phần nào giữa PartA và PartB
local part = workspace:FindPartOnRay(ray)
if part then
print("Hit part: " .. part:GetFullName())
else
-- Điều này không bao giờ xảy ra, vì tia lửa của chúng tôi bắt đầu tại PartA
-- và chỉ vào PhầnB, vì vậy chúng ta nên luôn luôn đánh vào PhầnB
-- hoặc một phần khác.
print("No part hit!")
end
Thuộc Tính
Phương Pháp
Sự Kiện
Changed
Sự kiện này bắt lửa khi nào thuộc tính RayValue.Value được thay đổi.Nó sẽ chạy với giá trị mới được lưu trong đối tượng argument, thay vì một chuỗi đại diện cho thuộc tính đang thay đổi.
Sự kiện này, giống như các sự kiện thay đổi khác, có thể được sử dụng để theo dõi khi một RayValue thay đổi và theo dõi các giá trị khác nhau mà nó có thể thay đổi.
Các sự kiện thay đổi tương đương tồn tại cho các đối tượng tương tự, chẳng hạn như NumberValue và StringValue , tùy thuộc vào loại đối tượng nào phù hợp nhất với nhu cầu.
Tham Số
Giá trị sau khi thay đổi.
Mẫu mã
The below example, assuming all referenced objects existed, would print the RayValue's new value each time it changed. In the example below it would print "{0, 0, 0}, {0.577350199, 0.577350199, 0.577350199}".
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