CFrame
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
El introducirde datos CFrame de 3D, abreviado como marco de coordenadas , describe una posición y orientación 3D.Se compone de un componente posicional y un componente rotacional y incluye operaciones aritméticas esenciales para trabajar con datos 3D en Roblox.
-- Crear un marco C en una posición determinada y rotación de Eulerlocal cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
Para una introducción al introducirde datos CFrame , vea CFrames .
Componente posicional
El componente posicional está disponible como un Vector3 .Además, las posiciones de los componentes de un objeto CFrame también están disponibles en las propiedades X , Y y Z como una Vector3 .
Componente rotacional
almacena datos de rotación 3D en una matriz de rotación 3×3 .Estos valores se devuelven por la función CFrame:GetComponents() después de los valores posicionales x , y y z.Esta matriz se usa internamente al hacer cálculos que involucren rotaciones, usando radianes como su unidad (para la conversión de una a otra, use math.rad() o math.deg()).Para obtener más información sobre cómo el motor de Roblox realiza rotaciones, vea Enum.RotationOrder .
La tabla siguiente representa la matriz de rotación de un objeto CFrame y su relación con las propiedades vectoriales disponibles como LookVector y RightVector.Aunque los componentes individuales de la matriz de rotación rara vez son útiles por sí mismos, las propiedades vectoriales que se derivan de ellos son mucho más útiles.
<th>YVector, UpVector</th><th>ZVector, -LookVector <sup>†</sup></th></tr></thead><tbody><tr><td>R00</td><td>R01</td><td>R02</td></tr><tr><td>R10</td><td>R11</td><td>R12</td></tr><tr><td>R20</td><td>R21</td><td>R22</td></tr></tbody>
XVector, Vector derecho |
---|
Resumen
Constructores
- new()
Devuelve una identidad vacía CFrame .
Devuelve un CFrame sin rotación con la posición del proporcionado Vector3 .
Devuelve un CFrame con la posición del primer Vector3 y una orientación apuntada hacia el segundo.
Devuelve un CFrame con una posición que se compone de los componentes x, y y z proporcionados.
Devuelve un CFrame desde la posición ( x , y , z ) y un cuadrático ( qX , qY , qZ , qW ).
Devuelve un CFrame desde la posición ( x , y , z ) con una orientación especificada por la matriz de rotación.
Devuelve un CFrame con la posición del primer Vector3 y una orientación apuntada hacia el segundo.
Devuelve un CFrame con la posición del primer Vector3 y una orientación dirigida a lo largo del segundo.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Devuelve un CFrame que representa la orientación necesaria para girar desde la primera Vector3 hasta la segunda, con la posición establecida en cero.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes.Las rotaciones se aplican en la opcional Enum.RotationOrder con un valor predeterminado de XYZ .
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes usando Enum.RotationOrder.XYZ .
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes usando Enum.RotationOrder.YXZ .
Equivalente a fromEulerAnglesXYZ() .
- fromOrientation(rx : number,ry : number,rz : number)
Equivalente a fromEulerAnglesYXZ() .
- fromAxisAngle(v : Vector3,r : number)
Devuelve un giro de CFrame de una unidad Vector3 y un giro en radianes.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Devuelve un CFrame de una traducción y las columnas de una matriz de rotación.
Propiedades
Una identidad CFrame.
La posición 3D del CFrame .
Una copia del CFrame sin traducción.
La coordenada X de la posición.
La coordenada Y de la posición.
La coordenada Z de la posición.
El componente de dirección hacia adelante de la orientación del objeto CFrame , equivalente a la forma negada de ZVector .
El componente de dirección correcta de la orientación del objeto CFrame.
El componente de dirección hacia arriba de la orientación del objeto CFrame.
Equivalente a RightVector .
Equivalente a UpVector .
El componente Z de la orientación del objeto CFrame . Equivalente a la tercera columna de la matriz de rotación.
Métodos
Devuelve lo contrario de la CFrame .
Devuelve un CFrame interpolado entre sí y goal por la fracción alpha .
Devuelve una copia ortonormalizada de la CFrame.
Recibe uno o más objetos CFrame y los devuelve transformados desde el espacio del objeto al espacio del mundo.
Recibe uno o más objetos CFrame y los devuelve transformados desde el espacio mundial al espacio de objetos.
Recibe uno o más objetos Vector3 y los devuelve transformados desde el espacio del objeto al espacio del mundo.
Recibe uno o más objetos Vector3 y los devuelve transformados desde el espacio mundial al espacio de objetos.
Recibe uno o más objetos Vector3 y los devuelve rotados desde el espacio del objeto al espacio mundial.
Recibe uno o más objetos Vector3 y los devuelve rotados desde el mundo al espacio de objetos.
Devuelve los valores x , y , z , R00 , R01 , R02 , R10 , R11 , R12 , R20 , R21 , y R22 , donde x``y``z ‑ CFrame ‑ R00 ‑ R22 ‑ representan la posición de la matriz de rotación y ‑ representan su matriz 3×3.
Devuelve ángulos aproximados que se podrían utilizar para generar el CFrame usando el opcional Enum.RotationOrder.
Devuelve ángulos aproximados que se podrían utilizar para generar el CFrame usando Enum.RotationOrder.XYZ .
Devuelve ángulos aproximados que se podrían utilizar para generar el CFrame usando Enum.RotationOrder.YXZ .
Equivalente a CFrame:ToEulerAnglesYXZ() .
Devuelve un túnel de un Vector3 y un número que representa la rotación del CFrame en la representación del ángulo del eje.
Equivalente a CFrame:GetComponents() .
Devuelve true si el otro CFrame está lo suficientemente cerca de este CFrame en ambas posiciones y rotación.
Operaciones de matemáticas
Constructores
new
Devuelve un nuevo CFrame ubicado en pos y dirigido hacia lookAt , asumiendo que (0, 1, 0) se considera "arriba" en el espacio mundial.
Este sobrecarga de constructor ha sido reemplazado por CFrame.lookAt(), que logra un objetivo similar. Se mantiene por el bien de la compatibilidad con versiones anteriores.
En ángulos de pendiente altos (alrededor de 82 grados), puedes experimentar inestabilidad numérica.Si este es un problema, o si requiere un fuerza vectorial"superior" diferente, use CFrame.fromMatrix() para construir más precisamente el CFrame .Además, si lookAt está directamente por encima de pos (ángulo de inclinación de 90 grados), el vector "arriba" cambia al eje X.
new
Devuelve un CFrame desde la posición ( x , y , z ) y un cuadrático ( qX , qY , qZ , qW ).Se espera que el cuadrático sea de longitud de unidad para representar una rotación válida.Si este no es el caso, el cuadrático se normalizará.
lookAlong
Devuelve un nuevo CFrame con la posición de at y mirando hacia direction , opcionalmente especificando la dirección hacia arriba ( up ) con un valor predeterminado de (0, 1, 0) .
Este constructor es equivalente a CFrame.lookAt(at, at + direction) .
fromEulerAngles
Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes.Las rotaciones se aplican en la opcional Enum.RotationOrder con un valor predeterminado de XYZ , equivalente a:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parámetros
fromEulerAnglesXYZ
Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes usando Enum.RotationOrder.XYZ , equivalente a:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes usando Enum.RotationOrder.YXZ , equivalente a:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Devuelve un CFrame de una traducción y las columnas de una matriz de rotación.Si vZ se excluye, la tercera columna se calcula como vX:Cross(vY).Unit .
Parámetros
Equivalente a RightVector .
Equivalente a - LookVector .
Propiedades
LookVector
El componente de dirección hacia adelante de la orientación del objeto CFrame, equivalente a la negada ZVector o la tercera columna negada de la matriz de rotación.
local cf = CFrame.new(0, 0, 0)local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()print(cf.LookVector) --> (-0, -0, -1)print(-cf.ZVector) --> (-0, -0, -1)print(-R02, -R12, -R22) --> (-0 -0 -1)
Añadir un objeto CFrame a sí mismo LookVector produce un objeto CFrame movido hacia adelante en cualquier dirección que esté mirando por 1 unidad.
RightVector
El componente de dirección correcta de la orientación del objeto CFrame . Equivalente a XVector o a la primera columna de la matriz de rotación.
local cf = CFrame.new(0, 0, 0)local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()print(cf.RightVector) --> (1, 0, 0)print(cf.XVector) --> (1, 0, 0)print(R00, R10, R20) --> (1 0 0)
UpVector
El componente de dirección hacia arriba de la orientación del objeto CFrame . Equivalente a YVector o a la segunda columna de la matriz de rotación.
local cf = CFrame.new(0, 0, 0)local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()print(cf.UpVector) --> (0, 1, 0)print(cf.YVector) --> (0, 1, 0)print(R01, R11, R21) --> (0 1 0)
XVector
El componente X de la orientación del objeto CFrame . Equivalente a RightVector o a la primera columna de la matriz de rotación.
local cf = CFrame.new(0, 0, 0)local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()print(cf.XVector) --> (1, 0, 0)print(cf.RightVector) --> (1, 0, 0)print(R00, R10, R20) --> (1 0 0)
YVector
El componente Y de la orientación del objeto CFrame . Equivalente a UpVector o a la segunda columna de la matriz de rotación.
local cf = CFrame.new(0, 0, 0)local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()print(cf.YVector) --> (0, 1, 0)print(cf.UpVector) --> (0, 1, 0)print(R01, R11, R21) --> (0 1 0)
ZVector
El componente Z de la orientación del objeto CFrame . Equivalente al negado LookVector o a la tercera columna de la matriz de rotación.
local cf = CFrame.new(0, 0, 0)local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()print(cf.ZVector) --> (0, 0, 1)print(-cf.LookVector) --> (0, 0, 1)print(R02, R12, R22) --> (0 0 1)
Métodos
Orthonormalize
Devuelve una copia ortonormalizada de la CFrame.La propiedad BasePart.CFrame aplica automáticamente la ortonormalización, pero otras API que toman CFrames no lo hacen, por lo que este método es ocasionalmente necesario al actualizar incrementalmente un CFrame y usarlo con ellos.
Devuelve
ToEulerAngles
Devuelve ángulos aproximados que se podrían utilizar para generar el CFrame usando el opcional Enum.RotationOrder.Si no proporciona order, el método usa Enum.RotationOrder.XYZ.
Parámetros
FuzzyEq
Devuelve true si el otro CFrame está lo suficientemente cerca de este CFrame en ambas posiciones y rotación.El valor epsilon se usa para controlar la tolerancia para esta similitud; este valor es opcional y debe ser un valor positivo pequeño si se proporciona.La similitud para la posición es de componentes mientras que la rotación usa una aproximación rápida de la diferencia de ángulo.