Datatype.CFrame 数据类输入,通常指为 坐标框 ,描述 3D 位置和方向。它由一个 位置 组件和一个 1>旋转1> 组件组成,并且包含必需的 arithmetic 操作以便在 Roblox 上使用 3D 数据。
-- 在特定位置创建一个 CFrame 和 Euler 旋转local cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
对于介绍 CFrame 数据类输入的介绍,请参阅 CFrames。
位置部件
位置部件可以作为 Vector3 。 此外, CFrame 对象的位置部件也可以在 X 、 1> Datatype.CFrame.Y|Y1> 和
旋转部件
CFrame 存储 3D
下表表示CFrame对旋转矩阵的关系,以及其与LookVector和RightVector等可用量子属性的关系。虽然从旋转矩阵中的个별组成部分很少有用,但从它们得到的量子属性远比单独的组成部分更有用。
<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 | YVector、UpVector | ZVector,-LookVector ° |
---|
^ 与其他人不同,Datatype.CFrame.LookVector|LookVector 代表负向列部件。Datatype.CFrame.LookVector|LookVector 有助于因为许多 1>Class.Instance|Instances1> 如 <figcaption>4>Class.Camera|Camera</figcaption>4>
概要
构造工具
- new()
返回一个空的身份证明 CFrame .
返回一个 CFrame ,其位置由提供的 x 、 y 和 1> z1> 组成部分。
从位置 ( CFrame , x , y 和第四化 ( 2>qX2> , 5>qY5> , 8>qZ8> , CFrame1> ) 返回一个 4>Datatype.CFrame4> 。
从位置( CFrame , x , y )返回一个由旋转矩阵指定的方向回1> Datatype.CFrame1> .
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
从角度 CFrame 返回旋转 rx 、 ry 和 2>rz2> 在角度。旋转在默认的 5>枚列表.RotationOrder5> 中使用 8>xyz8> 。
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
从角度 rx 、 ry 和 1> rz1> 在使用 4> enum.RotationOrder.XYZ4> 的角度返回旋转的 CFrame0>。
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
从角度 rx 、 ry 和 1> rz1> 在使用 4> enum.RotationOrder.YXZ4> 的角度返回旋转的 CFrame0>。
相当于 fromEulerAnglesXYZ()。
- fromOrientation(rx : number,ry : number,rz : number)
相当于 fromEulerAnglesYXZ() .
- fromAxisAngle(v : Vector3,r : number)
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
从翻译和旋转矩阵的栏中返回一个 CFrame。
属性
没有翻译或旋转的身份 CFrame 。
Datatype.CFrame 的 3D 位置。
一个没有翻译的 CFrame 副本。
位置的 X 坐标。
位置的 Y 坐标。
位置的 Z 坐标。
Datatype.CFrame 对象的前向方向组件的方向,相当于 ZVector 的负向形式。
Datatype.CFrame 对象的右向方向组件。
Datatype.CFrame 对象的上向组件。
相当于 RightVector 。
相当于 UpVector .
Datatype.CFrame 对象的方向。相当于旋转矩阵的第三个栏。
方法
返回 CFrame 的反向。
返回一个 CFrame 在自己和 goal 之间交换的交换量 alpha 。
返回一个或者通常化的副本 CFrame .
收到一个或多个 CFrame 对象,并将其从对象到世界空间的变形返回。
收到一个或多个 CFrame 对象,并将其从世界空间变成对象空间。
收到一个或多个 Vector3 对象,并将其从对象到世界空间的变形返回。
收到一个或多个 Vector3 对象,并将其从世界空间变成对象空间。
收到一个或多个 Vector3 对象,并将其从对象到世界空间旋转。
收到一个或多个 Vector3 对象,并将其从世界空间旋转到对象空间。
返回值 x , y , z , 1> R
返回使用可选的 enum.RotationOrder 生成 Datatype.CFrame 的角度。
返回使用 CFrame 生成 Enum.RotationOrder.XYZ 的角度。
返回使用 CFrame 生成 Enum.RotationOrder.YXZ 的角度。
如果另一个“Datatype.CFrame”足够接近这个“Datatype.CFrame”在 both position and rotation 中,返回 true。
数学算式
构造工具
new
返回一个新的 CFrame 位于 pos 和面向 lookAt ,假设 2>(0, 1, 0)2> 是世界空间中的 “上”。
此构建器 overload 已被替换为 CFrame.lookAt() , 实现类似的目标。它仍然是为了兼容性原因而存在。
在高 pitch 角度(大约 82 度),您可能会遇到数学不稳定。如果这是一个问题,或者您需要一个不同的“上” 向矢量力,请使用 CFrame.fromMatrix() 更准确地构建 CFrame 。 此外,如果
fromEulerAngles
从角度 CFrame 旋转返回,从 rx 、 ry 和 2>rz2> 在角度上。旋转在选项的 5>enum.RotationOrder5> 中,默认为 8>XYZ8> ,相当于:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
参数
fromMatrix
从翻译和旋转矩阵的栏中返回一个 CFrame。如果 vZ 被排除,第三个栏为 vX:Cross(vY).Unit 计算。
参数
属性
LookVector
Datatype.CFrame 对象的前向方向组件,相当于 negated ZVector 或旋转矩阵的第三个负向列。
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)
将 CFrame 对象的 LookVector 添加到自己,它将在它面向的任何方向移动 1 单位。
XVector
Datatype.CFrame 对象的方向。相当于 RightVector 或旋转矩阵的第一个列。
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)
ZVector
Datatype.CFrame 对象的方向。相当于 negated LookVector 或旋转矩阵的第三个栏。
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)
方法
Orthonormalize
返回一个或者通常化的副本 CFrame 。 BasePart.CFrame 属性会自动应用或者通常化,但其他 API 通过 CFrames 获取 2>Class.BasePart.CFrame2> 不会,因此此方法在增量更新 5>Datatype.CFrame5>
返回
ToEulerAngles
返回大约角度,可用于使用选项的 Enum.RotationOrder 生成。 如果您不提供 order,方法使用 1> enum.RotationOrder.XYZ1> 。