Camera

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No replicado

El objeto Cámara define una vista del mundo 3D. En una experiencia en ejecución, cada cliente tiene su propio objeto Cámara que reside en ese cliente local Workspace , accesible a través de la propiedad 1> Class.Workspace.CurrentCamera1>.

Las propiedades de cámara más importantes son:

  • Camera.CFrame que representa la posición y orientación de la cámara.

  • Camera.CameraType que es leído por los scripts de la cámara de la experiencia y determina cómo la cámara debería actualizar cada fotograma.

  • Camera.CameraSubject lo cual es leído por los scripts de la cámara de la experiencia y determina qué objeto debería seguir la cámara.

  • Camera.FieldOfView que representa el alcance visible del mundo observable.

  • Camera.Focus que representa el punto en el que se encuentra la cámara. Es importante que esta propiedad esté establecer, ya que ciertas imágenes serán más detalladas y se actualizarán con más frecuencia dependiendo de la cercanía de la enfoque.

Vea Personalizar la cámara para obtener más información sobre cómo ajustar y personalizar el comportamiento de la cámara.

Resumen

Propiedades

  • Leer paralelo

    El CFrame de la Camera, que define su posición y orientación en el mundo 3D.

  • Leer paralelo

    El Humanoid o BasePart que es el tema de Camera

  • Especifica el Enum.CameraType para que se lea por los scripts de la cámara.

  • No replicado
    Leer paralelo

    Establece el ángulo de la diagonnal del campo de vistade la cámara.

  • Leer paralelo

    Establece el ángulo de la vertical del campo de vistade la cámara.

  • Determina el valor de FOV de la Camera que es invencible debido a los cambios en el tamaño de la ventana.

  • Leer paralelo

    Establece el área en el espacio 3D que es priorizada por los sistemas gráficos de Roblox.

  • Leer paralelo

    Alterna si la cámara seguirá automáticamente el movimiento de la cabeza de un jugador usando un dispositivo VR.

  • Leer paralelo

    Establece el escalado de la perspectiva del usuario del mundo cuando se utiliza VR.

  • No replicado
    Leer paralelo

    Establece el ángulo del campo de visión de la cámara alrededor del eje de visualización más largo.

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el desplazamiento negativo Z de la cámara cerca del avión de clip.

  • Alterna si aplicar la inclinación y el desplazamiento desde la propiedad Camera.CFrame mientras el jugador está usando un dispositivo VR.

  • Solo lectura
    No replicado
    Leer paralelo

    Las dimensiones de la zona segura del dispositivo en un cliente Roblox.

Métodos

  • GetPartsObscuringTarget(castPoints : Array,ignoreList : Instances):Instances

    Devuelve un arreglo de BaseParts que están ocultando las líneas de visión entre el Camera.CFrame y los puntos de cast.

  • Devuelve el CFrame real donde se está renderizando el Camera y se tiene en cuenta cualquier rodada aplicada y el impacto de los dispositivos VR.

  • Devuelve en radianes el giro actual de la cámara, o la rotación alrededor de la Z-axis de la cámara, aplicada a la Camera usando Camera:SetRoll() .

  • Escribir paralelo

    Crea una unidad Ray desde una posición en la pantalla (en píxeles), en una profundidad fijada desde la Camera orientada en la dirección de la cámara. Cuenta con el inserto de GUI.

  • SetRoll(rollAngle : number):void

    Establece la rotación actual aplicada alrededor del eje Z de la cámara.

  • Escribir paralelo

    Crea una unidad Ray a partir de una posición en la ventana (en píxeles), en una profundidad especificada por el Camera , orientado en la dirección de la cámara. No cuenta con el inserto ‪Enums.ScreenInsets|CoreUISafeInsets|Enums|Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.En

  • Escribir paralelo

    Devuelve la ubicación y profundidad de una pantallaworldPoint y worldPoint y si este punto está dentro de los límites de la pantalla. Cuenta el inserto de GUI.

  • Escribir paralelo

    Devuelve la ubicación y profundidad de la pantalla de un Datatype.Vector3worldPoint y si este punto está dentro de los límites de la pantalla. No cuenta el inserto de GUI.

  • ZoomToExtents(boundingBoxCFrame : CFrame,boundingBoxSize : Vector3):void

Propiedades

CFrame

Leer paralelo

Esta propiedad es la CFrame de la Camera, que define su posición y orientación en el mundo 3D. Nota que algunas transformaciones, como la rotación de la cabeza al usar dispositivos VR, no se reflejan en esta propiedad, por lo que deberías usar Class.Camera:GetRenderCFrame()|GetRenderCFrame

Puede mover la cámara al configurar esta propiedad. Sin embargo, los scripts de cámara predeterminados también lo hacen, por lo que debe:

  • Establece la cámara Camera.CameraType a Enum.CameraType.Scriptable para que los scripts de cámara predeterminados no actualicen el CFrame de la cámara. Este método es el más simple y recomendado en la mayoría de los casos.

  • Reemplaza completamente los scripts de cámara predeterminados con alternativas. Esta aproximación solo se recomienda si no necesitas ninguna funcionalidad de cámara predeterminada.

La forma más intuitiva de posicionar y orientar el Camera es usando el constructor CFrame.lookAt(). En el ejemplo siguiente, el Camera está posicionado en 2>Datatype.Vector3.new(0, 10, 0)2> y está orientado para mirar hacia


local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
local pos = Vector3.new(0, 10, 0)
local lookAtPos = Vector3.new(10, 0, 0)
workspace.CurrentCamera.CFrame = CFrame.lookAt(pos, lookAtPos)

Aunque la cámara se puede colocar en la manera mostrada anterior, puede que quieras animarla para moverse con suavidad desde un CFrame a otro. Para esto, puedes hacer lo siguiente:

  • Establezca la posición / orientación de la cámara en cada marco con la RunService:BindToRenderStep() y el método CFrame:Lerp().

  • Crea y juega un Tween que animan la posición/orientación de la cámara:


    local Players = game:GetService("Players")
    local TweenService = game:GetService("TweenService")
    local camera = workspace.CurrentCamera
    camera.CameraType = Enum.CameraType.Scriptable
    local player = Players.LocalPlayer
    local character = player.Character
    if not character or character.Parent == nil then
    character = player.CharacterAdded:Wait()
    end
    local pos = camera.CFrame * Vector3.new(0, 20, 0)
    local lookAtPos = character.PrimaryPart.Position
    local targetCFrame = CFrame.lookAt(pos, lookAtPos)
    local tween = TweenService:Create(camera, TweenInfo.new(2), {CFrame = targetCFrame})
    tween:Play()

CameraSubject

Leer paralelo

CameraSubject acepta una variedad de Instances . Los scripts de cámara predeterminados responden de manera diferente a las configuraciones disponibles:

  • Por defecto, los scripts de la cámara siguen el estado actual del personaje local y Humanoid .

  • Cuando se establece a un BasePart, los scripts de la cámara siguen su posición, con un desplazamiento vertical en el caso de VehicleSeats .

CameraSubject no se puede configurar como nil . Intenta hacerlo para revertir a su valor anterior.

Para restaurar CameraSubject a su valor predeterminado, establece Humanoid :


local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local function resetCameraSubject()
if workspace.CurrentCamera and localPlayer.Character then
local humanoid = localPlayer.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
workspace.CurrentCamera.CameraSubject = humanoid
end
end
end

CameraType

Leer paralelo

Las scripts de cámara predeterminadas de Roblox tienen varios comportamientos incrustados. Al configurar esta propiedad, se alterna entre los varios comportamientos de Enum.CameraType . Nota que algunos tipos de cámara requieren un Camera.CameraSubject válido para funcionar correctamente.

Los scripts de cámara predeterminados no moverán o actualizarán la cámara si se establece Tipo de cámara en Enum.CameraType.Scriptable . Para obtener más información sobre la posición y orientación de la cámara manualmente, consulte Camera.CFrame .

Para todas las configuraciones de Tipo de cámara excepto Enum.CameraType.Scriptable, la propiedad 1> Class.Camera.CameraSubject|CameraSubject1> representa el objeto cuya posición se establece la posición de la cámara 4> Class.Camera.Focus4>.

DiagonalFieldOfView

No replicado
Leer paralelo

Establece la cantidad de grados en la dirección de la diapositiva (desde una esquina de la vista a su esquina opuesta) que la cámara puede ver. Vea FieldOfView para una explicación más general de la perspectiva de campo.

Nota que DiagonalFieldOfView representa el campo de visión que es visible por la renderización de Camera en el área de pantalla completa que puede estar oculta por agujeros o cortes de pantalla en algunos dispositivos. Vea Class. Camera.ViewportSize|ViewportSize para obtener más información.

FieldOfView

Leer paralelo

La propiedad FieldOfView establece la cantidad de grados en la dirección vertical en la que la cámara puede ver. Esta propiedad está fijada entre 1 y 120 grados y se pregunta por defecto en 70. Los campos de vista muy bajos o muy altos no se recomiendan como pueden desorientar a los jugadores.

Tenga en cuenta que la escala de uniformes está obligada, lo que significa que el campo de visión vertical y horizontal siempre está relacionado por el aspecto de la escala de la pantalla.

Los usos recomendados para FieldOfView (FOV) incluyen:

  • Reducir el FOV para dar la sensación de magnificación, por ejemplo, cuando se usan binoculares.
  • Aumentar el FOV cuando el jugador está "corriendo" para dar la impresión de una falta de control.

Nota que FieldOfView representa el campo de vista que es visible por el renderizado de Camera en el área de pantalla completa que puede estar oculta por agujas o cortes de pantalla en algunos dispositivos. Consulte Class.Camera. ViewportSize|ViewportSize para obtener más información.

FieldOfViewMode

Leer paralelo

El campo de visión de la cámara (FOV) debe actualizarse para reflejar los cambios ViewportSize. El valor de FieldOfViewMode determina qué valor de FOV se mantendrá constante.

Por ejemplo, cuando esta propiedad se establece en Enum.FieldOfViewMode.Vertical, el FOV horizontal se actualiza cuando el área de visualización se reubica, pero el FOV vertical se mantiene constante. Si esta propiedad se establece en Enum.FieldOfViewMode.Diagonal, tanto el FOV horizontal como el vertical se pueden cambiar para mantener el FOV vertical constante.

Focus

Leer paralelo

Ciertas operaciones gráficas que realiza el motor, como actualizar iluminación, puede tomar tiempo o esfuerzo computacional para completar. La propiedad de enfoque de la cámara, Focus , le dice al motor qué área en el espacio 3D priorizar cuando realiza tales operaciones. Por ejemplo, la iluminación dinámica de objetos como PointLights puede no renderizar a distancias lejos del enfoque.

Los scripts de cámara predeterminados de Roblox siempre establecen enfocar</

Enfoque no tiene ningún efecto en la posición o orientación de la cámara; véase Camera.CFrame para esto.

HeadLocked

Leer paralelo

Alterna si la cámara seguirá automáticamente el movimiento de la cabeza de un jugador usando un dispositivo VR. Cuando true (por defecto), el motor combina Camera.CFrame con el Enum.UserCFrame de la cabeza del usuario para renderizar la vista del jugador con el seguimiento de la cabeza


local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)
headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale
-- Esto será equivalente a Camera:GetRenderCFrame()
local renderCFrame = camera.CFrame * headCFrame

Se recomienda no desactivar esta propiedad por las siguientes razones:

  • Los jugadores pueden experimentar dolor de movimiento si no se agrega una solución de seguimiento de cabeza válida.
  • El motor de Roblox realiza optimizaciones de rendimiento cuando CabezaBloqueada es cierto.

Ver también

HeadScale

Leer paralelo

HeadScale es la escala de la perspectiva del usuario del mundo cuando se utiliza VR.

El tamaño de 1 stud en VR es 0.3 meters / HeadScale , lo que significa que valores más grandes de HeadScale valen para el mundo con perspectiva de usuario al usar dispositivos VR. Por ejemplo, una parte que mide 1 stud alto parece ser 0.6 metros alto para un jugador con un HeadScale de 0.5.

Esta propiedad se controla automáticamente por <a href="https://www.class.vrservice.automaticscalings.com/"> Class.VRService.AutomaticScaling</a> para alinear la perspectiva del jugador con el tamaño de su avatar. Si tiene la intención de controlar <b>Class.VRService.AutomaticScaling</b> usted mismo o usar personajes personalizados, alterna <i>Class.VRService.AutomaticScaling</i> a <i>Class.VRService

Esta propiedad no debe confundirse con Humanoid.HeadScale que es un padre de NumberValue a un Humanoid para controlar su escalado.

MaxAxisFieldOfView

No replicado
Leer paralelo

La propiedad MaxAxisFieldOfView establece la cantidad de grados en el eje de máxima distorsión que la cámara puede vista.

Cuando el eje más largo es el eje vertical, esta propiedad se comportará similar a la propiedad FieldOfView. Esto es generalmente el caso cuando un dispositivo está en una orientación de retrato. En una orientación de paisaje, el eje más largo será el eje horizontal; en este caso, la propiedad describe el campo de vista horizontal de la Camera.

NearPlaneZ

Solo lectura
No replicado
Leer paralelo

La propiedad CercaPlanoZ describe la distancia de la cámara al límite de aparición, en studs. La cámara al límite de aparición es un plano geométrico que se encuentra frente al límite de aparición de la cámara, Camera.CFrame . Todo lo que está entre este plano y la cámara no

Diagram showing how the NearPlaneZ clips (does not render) 3D content between the plane and the camera.

VRTiltAndRollEnabled

Leer paralelo

Esta propiedad alterna si aplicar la inclinación y el giro de la propiedad Camera.CFrame mientras el jugador está usando un dispositivo VR.

Para evitar el mal de movimiento, el horizonte debe seguir siendo nivel. Tilt y hacer girar la vista del jugador mientras se usa un dispositivo VR puede causar una desconexión entre el espacio físico del jugador y el espacio virtual que están viendo. Cambiar la dirección aparente hacia abajo puede hacer que los jugadores pierdan el equilibrio o experimenten vértigo.

Por estas razones, generalmente se recomienda dejar esta propiedad desactivada, a menos que tenga ampliamente probado su experiencia para estos efectos. Incluso con la inclinación y la rotación habilitadas, puede que desee asegurarse de que el jugador siempre tenga un marco de referencia estable, como el interior de un vehículo o un suelo que ayude al jugador a encontrarse en su espacio físico.

ViewportSize

Solo lectura
No replicado
Leer paralelo

ViewportSize 返回当前屏幕上的设备安全区的 dimensiones。此区域是一个长方体,包括 Roblox top bar 区域,但不包括任何设备 notches 或屏幕切割。 Class.Camera.ViewportSize|ViewportSize 的单位是 Roblox UI 偏移单位,可能与 native 显示像素不同。

Mobile device screen with cutout showing device safe area.

Como se ha notado anteriormente, ViewportSize no es igual a la capacidad de área de pantalla completa en las pantallas con cortes o ranuras. Para obtener la capac

Finalmente, tenga en cuenta que ViewportSize no es el tamaño de la ventana de visualización que usa la cámara para renderizar (la cámara renderiza en la zona de la pantalla completa). Además, las propiedades Camera.FieldOfView y Camera.DiagonalFieldOfView se bas

Actualizaciones de cámaras

Solo la Camera actualmente referida por Class.Workspace. CurrentCamera tiene su ViewportSize actualizado durante el marco de tiempo 2>Class.RunService.PreRender|PreRender2> . La 5>Class

Métodos

GetPartsObscuringTarget

Instances

Este método返回一个阵列 de BaseParts que están ocultando las líneas de visión entre el Camera.CFrame y Vector3 posiciones en el 1> castPoints1> arranque. Cualquier 4> Class

El parámetro castPoints se proporciona como un conjunto de posiciones Vector3 . Nota que el conjunto de posiciones BaseParts devueltos está en un orden aleatorio, y no se proporciona datos de raycast adicionales. Si necesitas datos como la posición de golpe, el material de toque o la superficie normal, deberías


local camera = workspace.CurrentCamera
local castPoints = {
Vector3.new(0, 10, 0),
Vector3.new(0, 15, 0)
}
local ignoreList = {}
local partsObscuringTarget = camera:GetPartsObscuringTarget(castPoints, ignoreList)

Si Terrain oculta un punto de cast, BaseParts oculta el punto de cast entre el punto de cast de Terrain y el punto de cast no se devolverá.

Parámetros

castPoints: Array

Un matriz de Vector3 posiciones de puntos de cast.

ignoreList: Instances

Un arreglo de Instances que deben ignorarse, junto con sus descendientes.


Devuelve

Instances

Un arreglo de BaseParts que oculta las líneas de visión entre el marco de la cámara y el Camera.CFrame .

Muestras de código

X-Ray Function

local Workspace = game:GetService("Workspace")
local camera = Workspace.CurrentCamera
local function XRay(castPoints, ignoreList)
ignoreList = ignoreList or {}
local parts = camera:GetPartsObscuringTarget(castPoints, ignoreList)
for _, part in parts do
part.LocalTransparencyModifier = 0.75
for _, child in pairs(part:GetChildren()) do
if child:IsA("Decal") or child:IsA("Texture") then
child.LocalTransparencyModifier = 0.75
end
end
end
end
XRay({ Vector3.new() })

GetRenderCFrame

Esta función devuelve el CFrame actual de la Camera como se renderiza, incluyendo el impacto de VR (VR head transformations no se aplican a la propiedad Camera.CFrame , por lo que es mejor usar 2> Class.Camera:GetRenderC

Por ejemplo, al usar VR, el Camera se renderiza en realidad en el siguiente CFrame :


local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)
headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale
renderCFrame = camera.CFrame * headCFrame

El render de la cámara CFrame solo se cambiará para tener en cuenta la cabeza cuando la propiedad Camera.HeadLocked esté verdadera.


Devuelve

El CFrame el Camera se está renderizando en.

GetRoll

Esta función devuelve, en radianes, el giro actual aplicado a la Camera usando Camera:SetRoll() . El giro se define como la rotación alrededor de la Z-axis de la cámara.

Esta función solo devuelve el rollo aplicado usando la función Camera:SetRoll(). El rollo manualmente aplicado a la cámara de Camera.CFrame no se cuenta. Para obtener el rollo actual de la Camera, incluido el rollo manualmente aplicado, puede usar el siguiente fragmento:


local function getActualRoll()
local camera = workspace.CurrentCamera
local trueUp = Vector3.new(0, 1, 0)
local cameraUp = camera:GetRenderCFrame().upVector
return math.acos(trueUp:Dot(cameraUp))
end

Devuelve

La actualización de la aplicación de Camera:SetRoll() , en radianes.

Muestras de código

Camera:GetRoll

local currentRoll = math.deg(workspace.CurrentCamera:GetRoll()) -- Gets the current roll of the camera in degrees.
if currentRoll ~= 20 then
workspace.CurrentCamera:SetRoll(math.rad(20)) -- If the camera isn't at 20 degrees roll, the roll is set to 20 degrees.
end

ScreenPointToRay

Escribir paralelo

Esta función crea una unidad Ray desde una posición 2D en la pantalla (definida en píxeles), que representa el GUI enset. La Ray original proviene del equivalente de la Vector3 del mundo en la profundidad 1> Class.Camera1> .

Como esta función reconoce el GUI inserto, el desplazamiento aplicado a los elementos GUI (como desde la barra superior) se tiene en cuenta. Esto significa que la posición de la pantalla especificada comenzará en la esquina superior izquierda del desplazamiento debajo de la barra superior. Para una función idéntica que no tiene en cuenta el desplazamiento, usa Camera:ViewportPointToRay() .

Como el Ray creado es un rayo de unidad, solo mide un estudio. Para crear un rayo más largo, puede hacer lo siguiendo:


local camera = workspace.CurrentCamera
local length = 500
local unitRay = camera:ScreenPointToRay(100, 100)
local extendedRay = Ray.new(unitRay.Origin, unitRay.Direction * length)

Esta función solo funciona para la cámara actual del espacio de trabajo. Las otras cámaras, como las que crea para un ViewportFrame , tienen un tamaño de inicio de la ventana de (1, 1) y solo se actualizan después de que las configure para Workspace.CurrentCamera . El desajuste en el tamaño de la

Parámetros

La posición en el eje X, en píxeles, del punto de la pantalla en el que se originar el Ray . Esta posición representa el espacio de inserción de la GUI.

La posición en el eje Y, en píxeles, del punto de la pantalla en el que se originar el Ray . Esta posición representa el espacio de inserción de la GUI.

depth: number

La profundidad desde el Camera , en studs, desde el cual desviar el origen del Ray .

Valor predeterminado: 0

Devuelve

Una unidad Ray , que se originó desde la posición de mira del mundo de la Vector3 dada en la profundidad de la distancia de la Camera . Este rayo está orientado en la dirección de la 1> Class.Camera1> .

SetRoll

void

Esta función está obsoleta y ya no se considera mejor práctica.

Esta función establece la actual capa, en radianes, de la Camera . La capa se aplica después de la Camera.CFrame y representa la rotación alrededor de la Z-axis de la cámara.

Por ejemplo, lo siguiente invertiría el Camera :


workspace.CurrentCamera:SetRoll(math.pi) -- math.pi radians = 180 degrees

SetRoll no tiene ningún efecto en ningún giro aplicado con la propiedad Camera.CFrame. El giro aplicado con la propiedad SetRoll no se refleja en la propiedad Camera.CFrame sino que se refleja en la propiedad CFrame que se devuelve por 1> Class.Camera:GetRenderCFrame()1> .

Esta función solo se puede usar cuando el Camera.CameraType está configurado como 'Scriptable', independientemente de si los scripts de cámara predeterminados están siendo usados. Si se usa con cualquier otro Camera.CameraType, se mostrará un aviso en la Salida.

Cualquier rodillo aplicado con esta función se perderá cuando el Camera.CameraType se cambie de 'Scriptable' .

Para obtener el conjunto de rodillos usando esta función usa Camera:GetRoll() .

Dado que esta función está obsoleta, se recomienda aplicar el rol a la Camera usando la propiedad Camera.CFrame. Por ejemplo:


local currentCFrame = workspace.CurrentCamera.CFrame
local rollCFrame = CFrame.Angles(0, 0, roll)
workspace.CurrentCamera.CFrame = currentCFrame * rollCFrame

Parámetros

rollAngle: number

El ángulo de rotación, en radianos, aplicado al Camera .


Devuelve

void

ViewportPointToRay

Escribir paralelo

Esta función crea una unidad Ray a partir de una posición 2D en la pantalla segura del dispositivo, definida en píxeles. El rayo se origina desde el Vector3 equivalente de la posición 2D en el mundo a la distancia de Camera .

Como se muestra a continuación, (0, 0) coincide con el punto superior izquierdo de la barra superior de Roblox. Esto significa que la posición de entrada 2D no hace cuenta de la inserción, pero hace CoreUISafeInsets de la inserción, pero no hace 1>cuenta1> de la inserción.

Diagram showing the origin of the device safe area viewport coordinate system.

Nota que las instancias de UI usan un sistema de coordenadas diferente ( GuiObject.AbsolutePosition usa el sistema de coordenadas de vista CoreUISafeInsets mientras que esta función usa el sistema de coordenadas de vista DeviceSafeInsets . Si desea especificar la posición en los núcleos de UI

Tenga en cuenta también que esta función solo funciona para la cámara Class.Workspace. CurrentCamera. Otras cámaras, como las que crea para una cámara ViewportFrame, tienen un tamaño de vista inicial de (1, 1) y solo se actualizan después de

Esta función se puede utilizar en conjunción con la propiedad ViewportSize para crear un rayo desde el centro de la pantalla, por ejemplo:


local Workspace = game:GetService("Workspace")
local camera = Workspace.CurrentCamera
local viewportPoint = camera.ViewportSize / 2
local unitRay = camera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y, 0)

Como el Ray creado es un rayo de unidad, solo mide un estudio. Para crear un rayo más largo, puede hacer lo siguiendo:


local Workspace = game:GetService("Workspace")
local camera = Workspace.CurrentCamera
local length = 500
local unitRay = camera:ScreenPointToRay(100, 100)
local extendedRay = Ray.new(unitRay.Origin, unitRay.Direction * length)

Parámetros

La posición en el eje X de la pantalla, en píxeles, del punto de vista en el que se originan los Ray , en coordenadas de seguridad del dispositivo.

La posición en el eje Y , en píxeles, del punto de vista en el que se originan los Ray, en coordenadas seguras del dispositivo.

depth: number

La profundidad desde el Camera , en studs, desde el cual desviar el origen del Ray .

Valor predeterminado: 0

Devuelve

Una unidad Ray , que se originó desde la posición de mundo de la vista dada en la posición de vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de la vista dada de

WorldToScreenPoint

Escribir paralelo

Esta función devuelve la ubicación y la profundidad de la pantalla de un Datatype.Vector3``worldPoint y si este punto está dentro de los límites de la pantalla.

Esta función tiene en cuenta la inserción actual de la GUI, como el espacio ocupado por la barra superior, lo que significa que la posición 2D devuelta está en el mismo término que las posiciones de la GUI y se puede usar para colocar elementos de la GUI. Para una función idéntica que ignora la inserción de la GUI, see Camera:WorldToViewportPoint() .


local camera = workspace.CurrentCamera
local worldPoint = Vector3.new(0, 10, 0)
local vector, onScreen = camera:WorldToScreenPoint(worldPoint)
local screenPoint = Vector2.new(vector.X, vector.Y)
local depth = vector.Z

Nota: esta función no realiza ningún raycasting y el valor deBoolean que indica si worldPoint está dentro de los límites de la pantalla será true independientemente de si el punto está oculto por BaseParts o 1> Class.Terrain1> .

Parámetros

worldPoint: Vector3

La posición del mundo Vector3 .


Devuelve

Un tutorial que contiene, en orden:

  • Un Vector3 cuyos X y Y componentes representan el desplazamiento del worldPoint desde la esquina superior izquierda de la pantalla, en píxeles. El Vector31> Z1> componente representa la profundidad del 4> worldPoint4> desde la pantalla (en studs).

  • Un valor deBooleano que indica si el worldPoint está dentro de los límites de la pantalla.

WorldToViewportPoint

Escribir paralelo

Esta función devuelve la ubicación y la profundidad de la pantalla de un Datatype.Vector3``worldPoint y si este punto está dentro de los límites de la pantalla.

Esta función no tiene en cuenta el inserto de GUI actual, como el espacio ocupado por la barra superior, lo que significa que la posición 2D devuelta se toma de la esquina superior izquierda de la ventanilla. A menos que estés usando ScreenGui.IgnoreGuiInset, esta posición no es adecuada para colocar elementos de GUI.

Para una función idéntica que cubre el punto de inserción de la GUI, see Camera:WorldToScreenPoint() .


local camera = workspace.CurrentCamera
local worldPoint = Vector3.new(0, 10, 0)
local vector, onScreen = camera:WorldToViewportPoint(worldPoint)
local viewportPoint = Vector2.new(vector.X, vector.Y)
local depth = vector.Z

Nota: esta función no realiza ningún raycasting y el valor deBoolean que indica si worldPoint está dentro de los límites de la pantalla será true independientemente de si el punto está oculto por BaseParts o 1> Class.Terrain1> .

Parámetros

worldPoint: Vector3

La posición del mundo Vector3 .


Devuelve

Un tutorial que contiene, en orden:

  • Un Vector3 cuyos componentes de X y Y representan el desplazamiento del 1> worldPoint1> desde la esquina superior izquierda de la ventana, en píxeles. El componente de 4> Datatype.Vector34> 7> Z7> representa la

  • Un valor deBooleano que indica si el worldPoint está dentro de los límites de la pantalla.

ZoomToExtents

void

Parámetros

boundingBoxCFrame: CFrame
boundingBoxSize: Vector3

Devuelve

void

Eventos

InterpolationFinished

Este evento se activa cuando el Camera ha terminado de interpolar usando la función Camera:Interpolate().

Este evento no se disparará si se interrumpe un tween debido a que se llama de nuevo a Camera:Interpolate() .

Se recomienda usar TweenService para animar el Camera en su lugar, ya que es más confiable y ofrece más opciones para aliviar los estilos.