CFrame
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
O tipo de dado CFrame , curto para quadro de coordenadas , descreve uma posição e orientação 3D.É composto por um componente posicional e um componente rotacional e inclui operações aritméticas essenciais para trabalhar com dados 3D no Roblox.
-- Crie um CFrame em uma determinada posição e rotação de Eulerlocal cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
Para uma introdução ao tipo de dados CFrame , veja CFrames.
Componente Posicional
O componente posicional está disponível como um Vector3 .Além disso, os componentes da posição de um objeto CFrame também estão disponíveis nas propriedades X , Y e Z como um Vector3 .
Componente de Rotação
armazena dados de rotação 3D em uma matriz de rotação 3×3 .Esses valores são retornados pela função CFrame:GetComponents() após os valores posicionais x e y e z.Esta matriz é usada internamente ao fazer cálculos envolvendo rotações, usando radianos como sua unidade (para conversão de um para o outro, use math.rad() ou math.deg()).Para mais informações sobre como o Motor do Roblox realiza rotações, veja Enum.RotationOrder .
A tabela abaixo representa a matriz de rotação de um objeto CFrame e sua relação com as propriedades vetoriais disponíveis, como LookVector e RightVector.Embora os componentes individuais da matriz de rotação raramente sejam úteis por conta própria, as propriedades do vetor que se originam nelas são muito mais úteis.
<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, DireitoVector |
---|
Resumo
Construtores
- new()
Retorna uma identidade vazia CFrame .
Retorna um CFrame sem rotação com a posição fornecida de Vector3.
Retorna um CFrame com a posição do primeiro Vector3 e uma orientação apontada para o segundo.
Retorna um CFrame com uma posição composta pelos componentes x, y e z fornecidos.
Retorna um CFrame a partir da posição ( x , y , z ) e quaternário ( qX , qY , qZ , qW ).
Retorna um CFrame da posição ( x , y , z ) com uma orientação especificada pela matriz de rotação.
Retorna um CFrame com a posição do primeiro Vector3 e uma orientação apontada para o segundo.
Retorna um CFrame com a posição do primeiro Vector3 e uma orientação direcionada ao longo do segundo.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Retorna um CFrame representando a orientação necessária para girar do primeiro Vector3 para o segundo, com a posição definida para zero.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Retorna um girado CFrame de ângulos rx, ry e rz em radianos.As rotações são aplicadas no opcional Enum.RotationOrder com um padrão de XYZ .
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Retorna um girado CFrame de ângulos rx , ry e rz em radianos usando Enum.RotationOrder.XYZ .
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Retorna um girado CFrame de ângulos rx , ry e rz em radianos usando Enum.RotationOrder.YXZ .
Equivalente a fromEulerAnglesXYZ().
- fromOrientation(rx : number,ry : number,rz : number)
Equivalente a fromEulerAnglesYXZ().
- fromAxisAngle(v : Vector3,r : number)
Retorna uma rotação CFrame de uma unidade Vector3 e uma rotação em radianos.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Retorna um CFrame de uma tradução e as colunas de uma matriz de rotação.
Propriedades
Uma identidade CFrame.
A posição 3D do CFrame .
Uma cópia do CFrame sem tradução.
A coordenada X da posição.
A coordenada Y da posição.
A coordenada Z da posição.
O componente de direção para frente da orientação do objeto CFrame , equivalente à forma negada de ZVector.
O componente de direção correta da orientação do objeto CFrame.
O componente de direção para cima da orientação do objeto CFrame.
Equivalente a RightVector.
Equivalente a UpVector.
O componente Z da orientação do objeto CFrame . Equivalente à terceira coluna da matriz de rotação.
Métodos
Retorna o inverso do CFrame.
Retorna um CFrame interpolado entre si e goal pela fração alpha.
Retorna uma cópia ortonormalizada do CFrame.
Recebe um ou mais objetos CFrame e os retorna transformados de objeto para o espaço mundial.
Recebe um ou mais objetos CFrame e os retorna transformados do mundo para o espaço de objetos.
Recebe um ou mais objetos Vector3 e os retorna transformados de objeto para o espaço mundial.
Recebe um ou mais objetos Vector3 e os retorna transformados do mundo para o espaço de objetos.
Recebe um ou mais objetos Vector3 e os retorna girados do objeto para o espaço mundial.
Recebe um ou mais objetos Vector3 e os retorna girados do mundo para o espaço de objeto.
Retorna os valores x , y , z , R00 , R01 , R02 , R10 , R11 , R12 , R20 , R21 , e R22 , onde x``y``z ‑ CFrame ‑ R00 ‑ R22 representam a posição da matriz de rotação e ‑ representam sua matriz de rotação 3×3.
Retorna ângulos aproximados que podem ser usados para gerar o CFrame usando o opcional Enum.RotationOrder.
Retorna ângulos aproximados que podem ser usados para gerar o CFrame usando Enum.RotationOrder.XYZ.
Retorna ângulos aproximados que podem ser usados para gerar o CFrame usando Enum.RotationOrder.YXZ.
Equivalente a CFrame:ToEulerAnglesYXZ().
Retorna um tuple de um Vector3 e um número que representa a rotação do CFrame na representação do ângulo do eixo.
Equivalente a CFrame:GetComponents().
Retorna true se o outro CFrame estiver suficientemente próximo desse CFrame em ambas as posições e rotações.
Retorna o ângulo, em radianos, entre a orientação de um CFrame e outro.
Operações matemáticas
Construtores
new
Retorna um novo CFrame localizado em pos e voltado para lookAt , assumindo que (0, 1, 0) seja considerado "para cima" no espaço mundial.
Este sobrecarregamento de construtor foi substituído por CFrame.lookAt(), que realiza um objetivo semelhante. Permanece por causa da compatibilidade com versões anteriores.
Em ângulos de inclinação altos (em torno de 82 graus), você pode experimentar instabilidade numérica.Se este for um problema, ou se você precisar de um vetor "para cima" diferente, use CFrame.fromMatrix() para construir com mais precisão o CFrame.Além disso, se lookAt estiver diretamente acima de pos (ângulo de inclinação de 90 graus), o vetor "para cima" muda para o eixo X.
new
Retorna um CFrame a partir da posição ( x , y , z ) e quaternário ( qX , qY , qZ , qW ).Espera-se que o quaternion seja de comprimento de unidade para representar uma rotação válida.Se esse não for o caso, o quaternion será normalizado.
lookAlong
Retorna um novo CFrame com a posição de at e voltado ao longo de direction , opcionalmente especificando a direção para cima ( up ) com um padrão de (0, 1, 0) .
Este construtor é equivalente a CFrame.lookAt(at, at + direction) .
fromEulerAngles
Retorna um girado CFrame de ângulos rx, ry e rz em radianos.As rotações são aplicadas no opcional Enum.RotationOrder com um padrão de XYZ , equivalente a:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parâmetros
fromEulerAnglesXYZ
Retorna um girado CFrame de ângulos rx , ry e rz em radianos usando Enum.RotationOrder.XYZ , equivalente a:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Retorna um girado CFrame de ângulos rx , ry e rz em radianos usando Enum.RotationOrder.YXZ , equivalente a:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Retorna um CFrame de uma tradução e as colunas de uma matriz de rotação.Se vZ for excluído, a terceira coluna é calculada como vX:Cross(vY).Unit .
Parâmetros
Equivalente a RightVector.
Equivalente a - LookVector.
Propriedades
LookVector
O componente de direção para frente da orientação do objeto CFrame, equivalente à coluna negada ZVector ou à coluna negada da matriz de rotação.
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)
Adicionar um objeto CFrame de um objeto LookVector produz um CFrame movido para a frente em qualquer direção que ele esteja enfrentando por 1 unidade.
RightVector
O componente de direção à direita da orientação do objeto CFrame . Equivalente a XVector ou à primeira coluna da matriz de rotação.
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
O componente de direção para cima da orientação do objeto CFrame . Equivalente a YVector ou à segunda coluna da matriz de rotação.
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
O componente X da orientação do objeto CFrame . Equivalente a RightVector ou à primeira coluna da matriz de rotação.
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
O componente Y da orientação do objeto CFrame . Equivalente a UpVector ou à segunda coluna da matriz de rotação.
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
O componente Z da orientação do objeto CFrame . Equivalente ao negado LookVector ou à terceira coluna da matriz de rotação.
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
Retorna uma cópia ortonormalizada do CFrame.A propriedade BasePart.CFrame automáticamente aplica ortonormalização, mas outras APIs que tomam CFrames não o fazem, então este método é ocasionalmente necessário ao atualizar incrementalmente um CFrame e usá-lo com eles.
Devolução
ToEulerAngles
Retorna ângulos aproximados que podem ser usados para gerar o CFrame usando o opcional Enum.RotationOrder.Se você não fornecer order, o método usa Enum.RotationOrder.XYZ.
Parâmetros
FuzzyEq
Retorna true se o outro CFrame estiver suficientemente próximo desse CFrame em ambas as posições e rotações.O valor epsilon é usado para controlar a tolerância para essa semelhança; esse valor é opcional e deve ser um pequeno valor positivo se fornecido.A semelhança para posição é componente a componente enquanto a rotação usa uma aproximação rápida da diferença de ângulo.