CFrame

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

CFrame資料輸入,簡稱 協調框架 ,用於描述3D位置和方向。它由 位置 組件和 旋轉 組件組成,包括在 Roblox 上處理 3D 數據所需的算術操作。


-- 在特定位置創建 CFrame 並使用歐几里旋轉
local cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)

有關介紹 CFrame 數據輸入的信息,請參閱 CFrames

位置元件

位置元件可用為 Vector3 。此外,一個 CFrame 物件的組件也可以在 XYZ 屬性中像一個 Vector3 一樣使用。

旋轉元件

商店 3D 旋轉資料在 3×3 旋轉矩陣中。這些值由 CFrame:GetComponents() 函數在 xyz 位置值之後返回。當執行涉及旋轉的計算時,會使用此矩陣來內部計算,使用 弧度 作為單位 (要轉換為另一個單位,請使用 math.rad()math.deg() )。有關 Roblox 引擎如何執行旋轉的更多資訊,請參閱 Enum.RotationOrder

下表代表 CFrame 對物件的旋轉矩陣和與可用向量特性,例如 LookVectorRightVector 的關係。雖然旋轉矩陣的個別組件很少單獨有用,但從它們派生的向量屬性卻非常有用。


<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、RightVector
與其他不同,LookVector 代表否定的柱子組件。數據類型。CFrame.LookVector|LookVector有用,因為許多Instances,例如Camera附件,將這個向量視為指向實例的方向。

概要

建構子

屬性

方法

數學算式

建構子

new

創建空白身份 CFrame

new

返回一個 CFrame 沒有旋轉提供的 Vector3 位置的旋轉。

參數

pos: Vector3

new

返回新的 CFrame 位置在 pos 並面向 lookAt ,假設 (0, 1, 0) 在世界空間中被視為"上升"。

這個過載建造者已被 CFrame.lookAt() 取代,達到相同的目標。它仍然是為了保留相容性。

在高傾斜角度(約 82 度)時,您可能會遇到數值不穩定。如果這是問題,或者如果您需要不同的「上」向量力,請使用 CFrame.fromMatrix() 來更準確地構建 CFrame 。此外,如果 lookAt 直接位於 pos (傾斜角度為 90 度)上方,「上」向量將切換到 X 軸。

參數

pos: Vector3
lookAt: Vector3

new

返回包含提供的 CFramexy 組件的位置的 z

參數

new

返回位置( 、 、 、 、 、 、 )和四元數( 、 、 、 )。期望極坐標為單位長度來表示有效的旋轉。如果這不是情況,四次方將被正常化。

參數

new

從位置(xyz)創建一個 CFrame 從位置( 、 、 ),並指定旋轉矩陣指定的方向。

[[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 ,可選擇向上方向( up )的默認值為 (0, 1, 0)

參數

lookAt: Vector3
預設值:Vector3.yAxis

lookAlong

返回新的 CFrame 與位置 at 並面向 direction , 可選擇向上方向 ( up ) 以默認值 (0, 1, 0)

此建造者與 CFrame.lookAt(at, at + direction) 相等。

參數

direction: Vector3
預設值:Vector3.yAxis

fromRotationBetweenVectors

返回一個 CFrame 代表需要從第一個 Vector3 旋轉到第二個的方向,位置設為零。

參數

from: Vector3

代表「從」方向的向量。

代表「到」方向的向量。

fromEulerAngles

返回旋轉的 CFrame 從角度 rx , ryrz 在弧度上。旋轉在可選的 Enum.RotationOrder 中應用,默認值為 XYZ,等於:


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

返回旋轉的 CFrame 從角度 rx , ryrz 在圓度上使用 Enum.RotationOrder.XYZ , 相當於:


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

返回旋轉的 CFrame 從角度 rx , ryrz 在圓度上使用 Enum.RotationOrder.YXZ , 相當於:


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

從單位 Vector3 返回旋轉的 CFrame 以及旋轉角度。

參數

fromMatrix

從翻譯和旋轉矩陣的列中返回 CFrame 和旋轉矩陣的列。如果 vZ 被排除,第三列將計算為 vX:Cross(vY).Unit

參數

pos: Vector3

CFrame 的 3D 位置。

等於 RightVector

等於 UpVector

等於 - LookVector

屬性

identity

沒有翻譯或旋轉的身份 CFrame 。此屬性是一個 常量 ,必須通過全球存取而不是通過個別 CFrame 物件來存取。

Position

CFrame 的 3D 位置。

Rotation

一個沒有翻譯的 CFrame 複本。

位置的 X 坐標。

位置的 Y 坐標。

位置的 Z 坐標。

LookVector

CFrame 對物件的前向方向組件,相當於否定的 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 單位前進的 CFrame

RightVector

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

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

X 是 CFrame 對物件的方向的 X 部分。等於 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

CFrame 對物件的 Y 組成方向。等於 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

CFrame 對物件的Z方向。等於否定的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

返回 CFrame 的正常化副本。 屬性會自動應用正交化,但其他接受 的 API 不會,因此在增量更新 並使用它們時,此方法有時需要。

返回

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 , R00 , R01 , R02 , R10 , R11 , R12 , R20 , R21 , 和 R22 , 其中 x y z 代表了 CFrameR00R22 代表了它的 3×3旋轉矩陣。

返回

ToEulerAngles

返回可用於生成 CFrame 的近似角度,使用可選擇的 Enum.RotationOrder 。如果你沒有提供 order , 方法使用 Enum.RotationOrder.XYZ .

參數

預設值:Enum.RotationOrder.XYZ

ToEulerAnglesXYZ

返回大約的角度,可以用來生成 CFrame 使用 Enum.RotationOrder.XYZ 產生。

ToEulerAnglesYXZ

返回大約的角度,可以用來生成 CFrame 使用 Enum.RotationOrder.YXZ 產生。

ToAxisAngle

返回一個tuple的Vector3和一個數字,代表軸角表示中的CFrame旋轉。

components

返回

FuzzyEq

如果另一個 CFrame 足夠接近這個 CFrame 在位置和旋轉上,返回 trueepsilon 值用於控制這種類似性的容差;此值是可選的,如果提供,應為小正值。位置的相似度是零件級的,而旋轉使用快速估計角度差的方法。

參數

other: CFrame
epsilon: number
預設值:0.00001 (1e-5)

返回

數學算式


產生一個新的 CFrame 代表兩個 CFrames 的組成。


產生一個 Vector3 從對象轉換為世界坐標的變形。


在世界空間由 Vector3 翻譯的 CFrame


在世界空間由負 CFrame 翻譯產生一個 Vector3