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 。 此外, 5> Datatype.CFrame5> 對物件的位置也可用在 8> Datatype.CFrame.X|X8> 、 1> Datatype.CFrame.Y|Y1>
旋轉零件
CFrame 存�
下表代表 CFrame 對物件的旋轉矩陣和與可用的量子模型屬性關係。 此外,旋轉矩陣的個別組成部分雖然罕見,但從它們得到的量子模型屬性卻非常有用。 雖然個別零件的旋轉矩陣不常用於自己,但從它們
<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 | YVector、UpVector | ZVector,-LookVector † |
---|
概要
建構子
- new()
返回一個空白的身份CFrame。
返回 CFrame ,其位置包含提供的 x 、 y 和 1> z1> 零件。
從位置 ( x , x , y 和 quaternion ( 1> qX1> , 4> y4> , 7> z7> , 0> qZ0> , CFrame3> ) 返回。
從位置( CFrame , x , y 返回1> Datatype.CFrame1> ,以便按旋轉矩陣指定的方向旋轉。
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
從角度 rx 、 ry 和 1> rz1> 在角度中返回旋轉 4> Datatype.CFrame4> 。旋轉在可選的 7> enum.RotationOrder7> 中,預設為 CFrame0> 。
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
返回角度 rx 、 ry 和 1>rz1> 的旋轉 4> Datatype.CFrame4> 從角度 7>px7> 、 0>py0> 和 3>rz3> 在使用 CFrame6> 的角度。
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
返回角度 rx 、ry 和 1> rz1> 的旋轉 4> Datatype.CFrame4> 從角度使用 7> Amount.prototype7> 。
相當於 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> R0
返回使用 CFrame 生成的 Enum.RotationOrder 的準確角度。
返回使用 Enum.RotationOrder.XYZ 生成 CFrame 的角度。
返回使用 CFrame 生成的 Enum.RotationOrder.YXZ 的平均角度。
如果另一個 true 位於此 Datatype.CFrame 的位置和方向上足夠接近,則返回 true。
數學算式
建構子
new
返回新位置在 CFrame 和 pos 面向的新 lookAt,假設 1>(0, 1, 0)1> 是世界空間中的「上」。
此構造器過載已被 CFrame.lookAt() 取代,達到相同的目標。它剩下是為了向後兼容。
在高抬頭角度 (約 82 度) 時,您可能會發生數學不穩定性。如果這是問題,或者您需要一個不同的「上」向向量力,請使用 CFrame.fromMatrix() 更準確地建造 CFrame 。此外,如
fromEulerAngles
從角度 CFrame 、 rx 和 ry 在角度中返回旋轉 2>Datatype.CFrame2>。旋轉在可選的 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 對物件的前向方向部分,相當於 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 添加到自己,會在其面向的任何方向產生一個 CFrame 移動到前方,以 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 對物件的方向。與 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 屬性會自動應用或者普通化,但其他取用 CFrames 的 API 不會,因此此方法時間不時會需要更新 2>Datatype.CFrame2> 並使用它們。
返回
ToEulerAngles
返回準確的角度,可以用來使用 CFrame 使用可選的 Enum.RotationOrder 生成。如果您沒有提供 order,方法會使用 2>枚列順序.XYZ2>。