CFrame

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í.

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 Euler
local 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
A diferencia de los demás, LookVector representa los componentes de columna negados.El LookVector es útil porque muchos Instances como el Camera y Attachments tratan ese vector como la dirección a la que apunta la instancia.

Resumen

Constructores

Propiedades

Métodos

Operaciones de matemáticas

Constructores

new

Crea una identidad vacía CFrame .

new

Devuelve un CFrame sin rotación con la posición del proporcionado Vector3 .

Parámetros

pos: Vector3

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.

Parámetros

pos: Vector3
lookAt: Vector3

new

Devuelve un CFrame con una posición que se compone de los componentes x, y y z proporcionados.

Parámetros

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á.

Parámetros

new

Crea un CFrame desde la posición ( x , y , z ) con una orientación especificada por la matriz de rotación.

[[R00 R01 R02] [R10 R11 R12] [R20 R21 R22]]

Parámetros

R00: number
R01: number
R02: number
R10: number
R11: number
R12: number
R20: number
R21: number
R22: number

lookAt

Devuelve un nuevo CFrame con la posición de at y enfrentado hacia lookAt , opcionalmente especificando la dirección hacia arriba ( up ) con un valor predeterminado de (0, 1, 0) .

Parámetros

lookAt: Vector3
Valor predeterminado: Vector3.yAxis

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) .

Parámetros

direction: Vector3
Valor predeterminado: Vector3.yAxis

fromRotationBetweenVectors

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.

Parámetros

from: Vector3

Vectro que representa la dirección "de" .

Vectro que representa la dirección "hacia".

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) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

Parámetros

rx: number
ry: number
rz: number
Valor predeterminado: Enum.RotationOrder.XYZ

fromEulerAnglesXYZ

Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes usando Enum.RotationOrder.XYZ , equivalente a:


CFrame.fromEulerAngles(rx, 0, 0) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

Parámetros

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

Devuelve un giroado CFrame de ángulos rx , ry y rz en radianes usando Enum.RotationOrder.YXZ , equivalente a:


CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(rx, 0, 0) * -- X
CFrame.fromEulerAngles(0, 0, rz) -- Z

Parámetros

rx: number
ry: number
rz: number

Angles

Equivalente a fromEulerAnglesXYZ() .

Parámetros

rx: number
ry: number
rz: number

fromOrientation

Equivalente a fromEulerAnglesYXZ() .

Parámetros

rx: number
ry: number
rz: number

fromAxisAngle

Devuelve un giro de CFrame de una unidad Vector3 y un giro en radianes.

Parámetros

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

pos: Vector3

La posición 3D del CFrame .

Equivalente a RightVector .

Equivalente a UpVector .

Equivalente a - LookVector .

Propiedades

identity

Una identidad CFrame.Esta propiedad es una constante y debe accederse globalmente en lugar de a través de un objeto individual CFrame.

Position

La posición 3D del CFrame .

Rotation

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.

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

Inverse

Devuelve lo contrario de la CFrame .

Devuelve

Lerp

Devuelve un CFrame interpolado entre sí y goal por la fracción alpha .

Parámetros

goal: CFrame
alpha: number

Devuelve

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

ToWorldSpace

Recibe uno o más objetos CFrame y los devuelve transformados desde el espacio del objeto al mundo. Equivalente a:

CFrame * cf

Parámetros

Devuelve

ToObjectSpace

Recibe uno o más objetos CFrame y los devuelve transformados del espacio mundial al espacio de objetos. Equivalente a:

CFrame:Inverse() * cf

Parámetros

Devuelve

PointToWorldSpace

Recibe uno o más objetos Vector3 y los devuelve transformados desde el espacio del objeto al mundo. Equivalente a:

CFrame * v3

Parámetros

Devuelve

PointToObjectSpace

Recibe uno o más objetos Vector3 y los devuelve transformados del espacio mundial al espacio de objetos. Equivalente a:

CFrame:Inverse() * v3

Parámetros

Devuelve

VectorToWorldSpace

Recibe uno o más objetos Vector3 y los devuelve rotados desde el espacio del objeto al mundo. Equivalente a:

(CFrame - CFrame.Position) * v3

Parámetros

Devuelve

VectorToObjectSpace

Recibe uno o más objetos Vector3 y los devuelve rotados desde el mundo al espacio de objetos. Equivalente a:

(CFrame:Inverse() - CFrame:Inverse().Position) * v3

Parámetros

Devuelve

GetComponents

Devuelve los valores x , y , z , R00 , R01 , R02 , R10 , R11 , R12 , R20 , R21 , y R22 , donde x``y``zCFrameR00R22 ‑ representan la posición de la matriz de rotación y ‑ representan su matriz 3×3.

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

Valor predeterminado: Enum.RotationOrder.XYZ

ToEulerAnglesXYZ

Devuelve ángulos aproximados que se podrían utilizar para generar el CFrame usando Enum.RotationOrder.XYZ .

ToEulerAnglesYXZ

Devuelve ángulos aproximados que se podrían utilizar para generar el CFrame usando Enum.RotationOrder.YXZ .

ToOrientation

ToAxisAngle

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.

components

Equivalente a CFrame:GetComponents() .

Devuelve

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.

Parámetros

other: CFrame
epsilon: number
Valor predeterminado: 0.00001 (1e-5)

Devuelve

Operaciones de matemáticas


Produce un nuevo CFrame que representa la composición de los dos CFrames.


Produce un Vector3 transformado de objeto a coordenadas mundiales.


Produce un CFrame traducido en el espacio mundial por el Vector3 .


Produce un CFrame traducido en el espacio mundial por el negativo Vector3 .