RayValue

Tampilkan yang Tidak Digunakan Lagi

*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".

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

Properti

Value

Baca Paralel

Ray yang disimpan.

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

value: Ray

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}".

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