CFrame
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Loại dữ đánh máyCFrame , ngắn cho khung phối hợp , mô tả vị trí và hướng 3D.Nó bao gồm một thành phần vị trí và một thành phần quay và bao gồm các hoạt động toán học cơ bản để làm việc với dữ liệu 3D trên Roblox.
-- Tạo một CFrame ở một vị trí nhất định và xoay Eulerlocal cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
Đối với một giới thiệu về đánh máydữ liệu CFrame , hãy xem CFrames .
Thành phần vị trí
Thành phần vị trí có sẵn dưới dạng Vector3.Ngoài ra, vị trí của các thành phần của một đối tượng CFrame cũng có sẵn trong X , Y và Z tính chất như một Vector3 .
Thành phần quay
CFrame lưu dữ liệu xoay 3D trong một ma trận xoay 3×3 **** .Các giá trị này được trả bởi chức năng CFrame:GetComponents() sau x , y và z giá trị vị trí.Ma trận này được sử dụng nội bộ khi thực hiện các tính toán liên quan đến việc xoay, sử dụng radians làm đơn vị (để chuyển đổi từ một sang các khác, hãy sử dụng math.rad() hoặc math.deg() ).Để biết thêm thông tin về cách Roblox Engine thực hiện các vòng xoay, xem Enum.RotationOrder .
Bảng dưới đây đại diện cho các thành phần của ma trận xoay của một đối tượng CFrame và mối quan hệ của chúng với các thuộc tính vector có sẵn như LookVector và RightVector .Mặc dù các thành phần riêng lẻ của ma trận xoay hiếm khi có ích cho chính nó, các tính chất vector mà xuất phát từ chúng lại có ích hơn nhiều.
<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 Ngôn ngữ Tiếng Anh |
---|
Tóm Tắt
Người Tạo
- new()
Trả về một danh tính trống CFrame .
Trả về một CFrame với không có sự xoay với vị trí của Vector3 được cung cấp.
Trả về một CFrame với vị trí của đầu tiên Vector3 và một hướng chỉ về phía thứ hai.
Trả về một CFrame với vị trí bao gồm các thành phần x , y và z được cung cấp.
Trả về một CFrame từ vị trí ( x , y , z ) và quaternion ( qX , qY , qZ , qW ).
Trả về một CFrame từ vị trí ( x, y, z) với một hướng được xác định bởi ma trận xoay.
Trả về một CFrame với vị trí của đầu tiên Vector3 và một hướng chỉ về phía thứ hai.
Trả về một CFrame với vị trí của đầu tiên Vector3 và một hướng dẫn theo chiều dọc thứ hai.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Trả về một CFrame đại diện cho hướng cần xoay từ đầu tiên Vector3 sang thứ hai, với vị trí được đặt thành không.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Trả về một điểm xoay CFrame từ các góc rx , ry và rz trong radian.Các vòng xoay được áp dụng trong tùy chọn Enum.RotationOrder với một mặc định là XYZ .
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Trả về một điểm xoay CFrame từ các góc rx , ry và rz trong radians bằng cách sử dụng Enum.RotationOrder.XYZ .
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Trả về một điểm xoay CFrame từ các góc rx , ry và rz trong radians bằng cách sử dụng Enum.RotationOrder.YXZ .
Tương đương với fromEulerAnglesXYZ() .
- fromOrientation(rx : number,ry : number,rz : number)
Tương đương với fromEulerAnglesYXZ() .
- fromAxisAngle(v : Vector3,r : number)
Trả về một đơn vị xoay CFrame từ một đơn vị Vector3 và một xoay theo radian.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Trả về một CFrame từ bản dịch và các cột của một ma trận xoay.
Thuộc Tính
Một danh tính CFrame không có bản dịch hoặc xoay.
Vị trí 3D của CFrame .
Một bản sao của CFrame với không có bản dịch.
Vị trí X của vị trí.
Vị trí Y của vị trí.
Vị trí Z của vị trí.
Thành phần hướng tiến của hướng của đối tượng CFrame , tương đương với dạng phủ nhận của ZVector .
Thành phần hướng bên phải của hướng của đối tượng CFrame .
Thành phần hướng lên của hướng của đối tượng CFrame .
Tương đương với RightVector .
Tương đương với UpVector .
Thành phần Z của hướng của đối tượng CFrame . Tương đương với cột thứ ba của ma trận quay.
Phương Pháp
Trả về ngược lại của CFrame .
Trả về một CFrame kết hợp giữa chính nó và goal bởi phần số alpha .
Trả về một bản sao bình thường hóa của CFrame .
Nhận một hoặc nhiều đối tượng CFrame và trả lại chúng được biến đổi từ đối tượng sang không gian thế giới.
Nhận một hoặc nhiều đối tượng CFrame và trả lại chúng được biến đổi từ thế giới sang không gian đối tượng.
Nhận một hoặc nhiều đối tượng Vector3 và trả lại chúng được biến đổi từ đối tượng sang không gian thế giới.
Nhận một hoặc nhiều đối tượng Vector3 và trả lại chúng được biến đổi từ thế giới sang không gian đối tượng.
Nhận một hoặc nhiều đối tượng Vector3 và trả lại chúng được xoay từ đối tượng sang không gian thế giới.
Nhận một hoặc nhiều đối tượng Vector3 và trả lại chúng được xoay từ thế giới sang không gian đối tượng.
Trả về các giá trị , , , , , , , , , và , nơi đại diện cho vị trí của và - đại diện cho ma trận vị trí 3×3 của nó.
Trả về các góc khái niệm khoảng có thể được sử dụng để tạo ra CFrame bằng cách sử dụng tùy chọn Enum.RotationOrder.
Trả về các góc khái niệm khoảng có thể được sử dụng để tạo ra CFrame bằng cách sử dụng Enum.RotationOrder.XYZ .
Trả về các góc khái niệm khoảng có thể được sử dụng để tạo ra CFrame bằng cách sử dụng Enum.RotationOrder.YXZ .
Tương đương với CFrame:ToEulerAnglesYXZ() .
Trả về một tuple của Vector3 và một số đại diện cho sự xoay của CFrame trong đại diện trục-góc.
Tương đương với CFrame:GetComponents() .
Trả về true nếu các khác CFrame đủ gần với vị trí và vòng xoay này CFrame ở cả vị trí và vòng xoay.
Phép Toán
Người Tạo
new
Trả về một mới CFrame được đặt tại pos và hướng về lookAt , cho rằng (0, 1, 0) được coi là "trên" trong không gian thế giới.
Biến thể trình xây dựng này đã được thay thế bởi CFrame.lookAt() , đạt được một mục tiêu tương tự. Nó vẫn còn lại vì lợi ích tương thích ngược.
Ở góc nghiêng cao (xung quanh 82 độ), bạn có thể gặp phải sự bất ổn định về số.Nếu đây là một vấn đề, hoặc nếu bạn cần một vector "up" khác, hãy sử dụng CFrame.fromMatrix() để xây dựng chính xác hơn CFrame .Ngoài ra, nếu lookAt ở trên trực tiếp pos (góc nghiêng 90 độ), vector "lên" chuyển sang trục X.
new
Trả về một CFrame từ vị trí ( x , y , z ) và quaternion ( qX , qY , qZ , qW ).Quaternion được mong đợi là có chiều dài của đơn vị để đại diện cho một lượt xoay hợp lệ.Nếu đây không phải là trường hợp, quaternion sẽ được bình thường hóa.
lookAlong
Trả về một cái mới CFrame với vị trí của at và hướng về phía direction , có thể đặt tùy chọn hướng lên ( up ) với một giá trị mặc định là (0, 1, 0) .
Người xây dựng này tương đương với CFrame.lookAt(at, at + direction) .
fromEulerAngles
Trả về một điểm xoay CFrame từ các góc rx , ry và rz trong radian.Các vòng xoay được áp dụng trong tùy chọn Enum.RotationOrder với một mặc định là XYZ , tương đương với:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Tham Số
fromEulerAnglesXYZ
Trả về một điểm xoay CFrame từ các góc rx , ry và rz trong radians bằng cách sử dụng Enum.RotationOrder.XYZ , tương đương với:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Trả về một điểm xoay CFrame từ các góc rx , ry và rz trong radians bằng cách sử dụng Enum.RotationOrder.YXZ , tương đương với:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Trả về một CFrame từ bản dịch và các cột của một ma trận xoay.Nếu vZ bị bỏ, cột thứ ba được tính toán như vX:Cross(vY).Unit .
Tham Số
Tương đương với RightVector .
Tương đương với - LookVector .
Thuộc Tính
LookVector
Thành phần hướng tiến của hướng của đối tượng CFrame , tương đương với negated ZVector hoặc negated cột thứ ba của ma trận xoay.
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)
Thêm một đối tượng vào chính nó sản xuất ra một được di chuyển về phía trước theo bất kỳ hướng nào nó đang đối mặt bởi 1 đơn vị.
RightVector
Thành phần hướng bên phải của hướng của đối tượng CFrame . Tương đương với XVector hoặc cột đầu tiên của ma trận xoay.
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
Thành phần hướng lên của hướng của đối tượng CFrame . Tương đương với YVector hoặc cột thứ hai của ma trận xoay.
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
Thành phần X của hướng của đối tượng CFrame . Tương đương với RightVector hoặc cột đầu tiên của ma trận xoay.
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
Thành phần Y của hướng của đối tượng CFrame . Tương đương với UpVector hoặc cột thứ hai của ma trận quay.
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
Thành phần Z của hướng của đối tượng CFrame . Tương đương với negated LookVector hoặc cột thứ ba của ma trận xoay.
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)
Phương Pháp
ToEulerAngles
Trả về các góc khái niệm khoảng có thể được sử dụng để tạo ra CFrame bằng cách sử dụng tùy chọn Enum.RotationOrder.Nếu bạn không cung cấp order, phương thức sử dụng Enum.RotationOrder.XYZ.
Tham Số
FuzzyEq
Trả về true nếu các khác CFrame đủ gần với vị trí và vòng xoay này CFrame ở cả vị trí và vòng xoay.Giá trị epsilon được sử dụng để kiểm soát dung sai cho sự tương tự này; giá trị này là tùy chọn và nên là một giá trị dương nhỏ nếu được cung cấp.Sự tương tự cho vị trí là thành phần theo cách thành phần trong khi quay sử dụng một phương trình gần như tương tự của sự khác biệt góc.