CFrame

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

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对旋转矩阵的关系,以及其与LookVectorRightVector等可用量子属性的关系。虽然从旋转矩阵中的个별组成部分很少有用,但从它们得到的量子属性远比单独的组成部分更有用。


<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,右向 VectorYVector、UpVectorZVector,-LookVector °

^ 与其他人不同,Datatype.CFrame.LookVector|LookVector 代表负向列部件。Datatype.CFrame.LookVector|LookVector 有助于因为许多 1>Class.Instance|Instances1> 如 <figcaption>4>Class.Camera|Camera</figcaption>4>

概要

构造工具

属性

方法

数学算式

构造工具

new

创建一个空白身份 CFrame

new

返回一个 CFrame ,但不旋转,其位置与提供的 Vector3 相同。

参数

pos: Vector3

new

返回一个新的 CFrame 位于 pos 和面向 lookAt ,假设 2>(0, 1, 0)2> 是世界空间中的 “上”。

此构建器 overload 已被替换为 CFrame.lookAt() , 实现类似的目标。它仍然是为了兼容性原因而存在。

在高 pitch 角度(大约 82 度),您可能会遇到数学不稳定。如果这是一个问题,或者您需要一个不同的“上” 向矢量力,请使用 CFrame.fromMatrix() 更准确地构建 CFrame 。 此外,如果

参数

pos: Vector3
lookAt: Vector3

new

返回一个 CFrame ,其位置由提供的 xy 和 1> z1> 组成部分。

参数

new

从位置 ( CFrame , x , y 和四联 ( 2>qX2> , 5>qY5> , 8>qZ8> , CFrame1> ) 返回一个

参数

new

从位置创建一个 CFramexy , 1> z1> ),该方向由旋转矩阵指定。

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

参数

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

lookAt

返回一个新的 CFrame ,其位置为 at ,面向 lookAt ,可选为向上 ( 1> up1> ) 指定默认方向 ( 4> (0, 1, 0)4> ) 。

参数

lookAt: Vector3
默认值:Vector3.yAxis

lookAlong

返回一个新的 CFrame ,其位置为 at ,并且面向以 direction ,可选择向上直接 ( 1> up1> ) ,默认为 4> (0, 1, 0)4> 。

此生成器相当于 CFrame.lookAt(at, at + direction)

参数

direction: Vector3
默认值:Vector3.yAxis

fromRotationBetweenVectors

返回一个 CFrame 代表需要旋转从第一个 Vector3 到第二个,位置设置为零。

参数

from: Vector3

向量表示“从”方向。

向量表示“到”方向。

fromEulerAngles

从角度 CFrame 旋转返回,从 rxry 和 2>rz2> 在角度上。旋转在选项的 5>enum.RotationOrder5> 中,默认为 8>XYZ8> ,相当于:


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

参数

rx: number
ry: number
rz: number
默认值:Enum.RotationOrder.XYZ

fromEulerAnglesXYZ

从角度 rxry 和 1> rz1> 在使用 4> enum.RotationOrder.XYZ4> 、相当于:


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

参数

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

从角度 rxry 和 1> rz1> 在使用 4> enum.RotationOrder.YXZ4> 、相当于:


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

参数

rx: number
ry: number
rz: number

Angles

参数

rx: number
ry: number
rz: number

fromOrientation

参数

rx: number
ry: number
rz: number

fromAxisAngle

从一个单元 CFrame 和一个旋转在度数上的旋转返回一个旋转的 Vector3

参数

fromMatrix

从翻译和旋转矩阵的栏中返回一个 CFrame。如果 vZ 被排除,第三个栏为 vX:Cross(vY).Unit 计算。

参数

pos: Vector3

Datatype.CFrame 的 3D 位置。

相当于 RightVector

相当于 UpVector .

相当于 - LookVector .

属性

identity

没有翻译或旋转的身份 CFrame 。此属性是一个 常量 ,必须通过单个 CFrame 对象访问而不是通过本地或通用的方式。

Position

Datatype.CFrame 的 3D 位置。

Rotation

一个没有翻译的 CFrame 副本。

位置的 X 坐标。

位置的 Y 坐标。

位置的 Z 坐标。

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 单位。

RightVector

Datatype.CFrame 对象的方向。相当于 XVector 或旋转矩阵的第一个列。


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

Datatype.CFrame 对象的方向。相当于 YVector 或旋转矩阵的第二个列。


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

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)

YVector

Datatype.CFrame 对象的方向。相当于 UpVector 或旋转矩阵的第二个列。


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

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)

方法

Inverse

返回 CFrame 的反向。

返回

Lerp

返回一个 CFrame 在自己和 goal 之间交换的交换量 alpha

参数

goal: CFrame
alpha: number

返回

Orthonormalize

返回一个或者通常化的副本 CFrameBasePart.CFrame 属性会自动应用或者通常化,但其他 API 通过 CFrames 获取 2>Class.BasePart.CFrame2> 不会,因此此方法在增量更新 5>Datatype.CFrame5>

返回

ToWorldSpace

收到一个或多个 CFrame 对象,并将其从对象到世界空间变形。相当于:

CFrame * cf

参数

返回

ToObjectSpace

收到一个或多个 CFrame 对象,并将其从世界空间变成对象空间。相当于:

CFrame:Inverse() * cf

参数

返回

PointToWorldSpace

收到一个或多个 Vector3 对象,并将其从对象到世界空间变形。相当于:

CFrame * v3

参数

返回

PointToObjectSpace

收到一个或多个 Vector3 对象,并将其从世界空间变成对象空间。相当于:

CFrame:Inverse() * v3

参数

返回

VectorToWorldSpace

收到一个或多个 Vector3 对象,并将其从对象到世界空间旋转。相当于:

(CFrame - CFrame.Position) * v3

参数

返回

VectorToObjectSpace

收到一个或多个 Vector3 对象,并将其从世界空间旋转到对象空间。相当于:

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

参数

返回

GetComponents

返回值 x , y , z , 1> R

返回

ToEulerAngles

返回大约角度,可用于使用选项的 Enum.RotationOrder 生成。 如果您不提供 order,方法使用 1> enum.RotationOrder.XYZ1> 。

参数

默认值:Enum.RotationOrder.XYZ

ToEulerAnglesXYZ

返回使用 CFrame 生成 Enum.RotationOrder.XYZ 的角度。

ToEulerAnglesYXZ

返回使用 CFrame 生成 Enum.RotationOrder.YXZ 的角度。

ToAxisAngle

返回一个 Vector3 和表示在轴-角度表示中的 CFrame 的旋转数。

components

返回

FuzzyEq

如果另一个 “Datatype.CFrame” 位于此 “Datatype.CFrame” 的位置和旋转方向上足够靠近,true 将返回。eps 值用于控制此类似度。此值是可选的,如果提供,将是一个小数值。角度 的角度 是组件方式。2> 对位置的角度2> 是快速

参数

other: CFrame
epsilon: number
默认值:0.00001 (1e-5)

返回

数学算式


生成一个新的 CFrame 代表两个 CFrames 的组合。


从对象到世界坐标转换为 Vector3


生成一个 CFrame 在世界空间翻译为 Datatype.Vector3 的。


生成一个 CFrame 在世界空间中通过负 Vector3 翻译的世界空间翻译。