RayValue
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Un RayValue es un objeto cuyo propósito es almacenar un solo rayo.Al igual que CFrameValue, un rayo almacenado de RayValue no se puede ver o editar dentro de la ventana de propiedades dentro del estudio.En cambio, utilice la barra de comandos para obtener y establecer el valor de estos objetos.Por ejemplo, puedes usar una línea como la siguiente para crear un nuevo valor RayValue llamado "Valor" dentro del Workspace.Crea un rayo en (0, 50, 0) y se enfrenta en la dirección positiva-X.
Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))
Dado que no hay una manera trivial de editar rayos dentro de Studio, a veces es mejor usar un CFrameValue en su lugar (que se puede cambiar a través de una parte o la cámara).Puedes reconstruir un rayo desde un marco CFrame usando Ray.new(cf.p, cf.lookVector * dist) , donde cf es un marco CFrame dado y dist es la longitud del rayo que quieres construcción.
Al igual que todos los objetos "-Value", este valor único se almacena en la propiedad de valor.El evento cambiado para esto (y otros objetos como este) se disparará con el nuevo valor almacenado en el objeto, en lugar de una cadena que represente la propiedad que se cambia.
Muestras de código
Este ejemplo de código demuestra la construcción de un Ray, el almacenamiento del Ray dentro de un RayValue y el lanzamiento de rayos para encontrar otras piezas entre dos piezas llamadas "PartA" y "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
-- Lanzar rayos para encontrar cualquier parte entre PartA y PartB
local part = workspace:FindPartOnRay(ray)
if part then
print("Hit part: " .. part:GetFullName())
else
-- Esto nunca debería suceder, ya que nuestro rayo comienza en PartA
-- y apunta hacia la ParteB, por lo que siempre deberíamos golpear la ParteB
-- o alguna otra parte.
print("No part hit!")
end
Propiedades
Métodos
Eventos
Changed
Este evento se activa cada vez que se cambia la propiedad RayValue.Value.Se ejecutará con el nuevo valor almacenado en el objeto de argumento, en lugar de una cadena que represente la propiedad que se está cambiando.
Este evento, como otros eventos cambiados, se puede usar para rastrear cuándo cambia un valor RayValue y para rastrear los diferentes valores que puede cambiar.
Existen eventos equivalentes cambiados para objetos similares, como NumberValue y StringValue, dependiendo de qué tipo de objeto mejor se adapte a la necesidad.
Parámetros
El valor después del cambio.
Muestras de código
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