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
Value
Phương Pháp
Sự Kiện
Changed
Tham Số
Mẫu mã
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