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

new

参数

pos: Vector3

new

参数

pos: Vector3
lookAt: Vector3

new

参数

new

参数

new

参数

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

lookAt

参数

lookAt: Vector3
默认值:Vector3.yAxis

lookAlong

参数

direction: Vector3
默认值:Vector3.yAxis

fromRotationBetweenVectors

参数

from: Vector3

fromEulerAngles

参数

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

fromEulerAnglesXYZ

参数

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

参数

rx: number
ry: number
rz: number

Angles

参数

rx: number
ry: number
rz: number

fromOrientation

参数

rx: number
ry: number
rz: number

fromAxisAngle

参数

fromMatrix

参数

属性

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)

返回

数学算式