RayValue
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Bir RayValue, tek bir Işın depolanmasının amacı olan bir nesnedir.CFRameValue'a benzer şekilde, bir RayValue'ın depolanmış ışını, stüdyodaki Özellikler penceresinde görüntülenemez veya düzenlenemez.Bunun yerine, bu nesnelerin değerini almak ve ayarlamak için Komut Barını kullanın.Örneğin, aşağıdaki gibi bir satırı kullanarak Workspace içinde "Değer" adlı yeni bir RayValue oluşturabilirsiniz.(0, 50, 0) noktasında bir ışın oluşturur ve pozitif-X yönünde yüzüyor.
Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))
Studio içinde ışınları düzenlemenin basit bir yolu yok olduğundan, bazen bunun yerine bir CFrameValue kullanmak daha iyidir (ki bu bir parça veya kamerayla değiştirilebilir).Bir ışını Ray.new(cf.p, cf.lookVector * dist) kullanarak bir CFrame'den yeniden yapabilirsiniz, burada cf bir verilen CFrame ve dist ın yapmak istediğiniz ışın uzunluğudur.
Tüm "-Value" nesneleri gibi, bu tek değer Değer özelliğine depolanır.Bunun için değiştirilen olay (ve benzeri diğer nesneler) değiştirilen özellik temsil eden bir dize yerine nesnede saklanan yeni değerle ateşlenecektir.
Kod Örnekleri
Bu kod örneği, bir Işın oluşturmayı, Işın değerinde saklanmayı ve "PartA" ve "PartB" olarak adlandırılan iki parça arasındaki diğer parçaları bulmak için Işın atışını gösterir.
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
-- PartA ve PartB arasında herhangi bir parça bulmak için Raycast
local part = workspace:FindPartOnRay(ray)
if part then
print("Hit part: " .. part:GetFullName())
else
-- Bu asla olmamalı, çünkü ışınımız PartA'da başlıyor
-- ve PartB'ye işaret ediyor, bu yüzden daima PartB'ye vurmalıyız
-- ya da başka bir bölüm.
print("No part hit!")
end
Özet
Özellikler
Depolanan Işın.
Özellikler
Yöntemler
Etkinlikler
Changed
Bu olay, RayValue.Value özelliği değiştiğinde her zaman ateşlenir.Değiştirilen özellikleri temsil eden bir dize yerine yeni değer depolanarak argüman nesnesinde çalışacaktır. It will run with the new value being stored in the argument object, instead of a string representing the property being changed.
Bu etkinlik, diğer değiştirilen etkinlikler gibi, bir RayValue değiştiğinde izlenebilir ve değiştirebileceği farklı değerleri izleyebilir.
Eşdeğer değiştirilen olaylar, ihtiyaca en iyi uyan nesne türüne bağlı olarak, örneğin NumberValue ve StringValue gibi benzer nesneler için mevcuttur.
Parametreler
Değişiklikten sonraki değer.
Kod Örnekleri
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