RayValue
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
RayValue adalah objek yang tujuannya adalah untuk menyimpan satu Ray.Mirip dengan CFrameValue, sinar yang disimpan oleh RayValue tidak dapat dilihat atau diedit dalam jendela Properti di dalam studio.Sebagai gantinya, gunakan bilah Perintah untuk mendapatkan dan mengatur nilai objek ini.Sebagai contoh, Anda dapat menggunakan baris seperti yang di bawah ini untuk membuat RayValue baru bernama "Value" di dalam Workspace.Ini membuat sebuah sinar di (0, 50, 0) dan menghadap ke arah positif-X.
Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))
Karena tidak ada cara sederhana untuk mengedit sinar dalam Studio, terkadang lebih baik menggunakan CFrameValue sebagai gantinya (yang dapat diubah melalui bagian atau kamera).Anda dapat membangun kembali sebuah sinar dari CFrame menggunakan Ray.new(cf.p, cf.lookVector * dist) , di mana cf adalah CFrame yang diberikan dan dist adalah panjang Ray yang ingin Anda buat.
Seperti semua objek "-Value", nilai tunggal ini disimpan dalam properti Value.Peristiwa yang diubah untuk ini (dan objek lain seperti itu) akan menembak dengan nilai baru yang disimpan dalam objek, bukan string yang mewakili properti yang diubah.
Contoh Kode
This code sample demonstrates constructing a Ray, storing the Ray within a RayValue and Raycasting to find other parts between two parts named "PartA" and "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
-- 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
Properti
Metode
Acara
Changed
Acara ini terjadi setiap kali properti RayValue.Value diubah.Ini akan berjalan dengan nilai baru yang disimpan dalam objek argumen, bukan string yang mewakili properti yang diubah.
Acara ini, seperti acara lain yang berubah, dapat digunakan untuk melacak kapan RayValue berubah dan melacak berbagai nilai yang mungkin berubah.
Peristiwa yang setara berubah ada untuk objek serupa, seperti NumberValue dan StringValue , tergantung pada jenis objek mana yang paling sesuai dengan kebutuhan.
Parameter
Nilai setelah perubahan.
Contoh Kode
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