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()
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
- fromOrientation(rx : number,ry : number,rz : number)
- fromAxisAngle(v : Vector3,r : number)
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
属性
没有翻译或旋转的身份 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
属性
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> 。