CFrame

Hiển Thị Bản Đã Lỗi Thời

*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 Euler
local 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 , YZ 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 , yz 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ư LookVectorRightVector .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
Không giống như những người khác, LookVector đại diện cho các thành phần cột bị phủ nhận.The LookVector is useful because many Instances such as the Camera and Attachments treat that vector as the direction the instance is pointing to.

Tóm Tắt

Người Tạo

Thuộc Tính

Phương Pháp

Phép Toán

Người Tạo

new

Tạo một danh tính trống CFrame .

new

Trả về một CFrame với không có sự xoay với vị trí của Vector3 được cung cấp.

Tham Số

pos: Vector3

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.

Tham Số

pos: Vector3
lookAt: Vector3

new

Trả về một CFrame với vị trí bao gồm các thành phần x , yz được cung cấp.

Tham Số

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.

Tham Số

new

Tạo 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.

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

Tham Số

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

lookAt

Trả về một cái mới CFrame với vị trí của at và hướng về lookAt , 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) .

Tham Số

lookAt: Vector3
Giá Trị Mặc Định: Vector3.yAxis

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) .

Tham Số

direction: Vector3
Giá Trị Mặc Định: Vector3.yAxis

fromRotationBetweenVectors

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.

Tham Số

from: Vector3

Vector đại diện cho hướng "từ".

Vector đại diện cho hướng "đến".

fromEulerAngles

Trả về một điểm xoay CFrame từ các góc rx , ryrz 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) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

Tham Số

rx: number
ry: number
rz: number
Giá Trị Mặc Định: Enum.RotationOrder.XYZ

fromEulerAnglesXYZ

Trả về một điểm xoay CFrame từ các góc rx , ryrz trong radians bằng cách sử dụng Enum.RotationOrder.XYZ , tương đương với:


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

Tham Số

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

Trả về một điểm xoay CFrame từ các góc rx , ryrz trong radians bằng cách sử dụng Enum.RotationOrder.YXZ , tương đương với:


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

Tham Số

rx: number
ry: number
rz: number

Angles

Tương đương với fromEulerAnglesXYZ() .

Tham Số

rx: number
ry: number
rz: number

fromOrientation

Tương đương với fromEulerAnglesYXZ() .

Tham Số

rx: number
ry: number
rz: number

fromAxisAngle

Trả về một đơn vị xoay CFrame từ một đơn vị Vector3 và một xoay theo radian.

Tham Số

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ố

pos: Vector3

Vị trí 3D của CFrame .

Tương đương với RightVector .

Tương đương với UpVector .

Tương đương với - LookVector .

Thuộc Tính

identity

Một danh tính CFrame không có bản dịch hoặc xoay.Thuộc tính này là một biến nhất quán và phải được truy cập toàn cầu thay vì thông qua một đối tượng cụ thể CFrame

Position

Vị trí 3D của CFrame .

Rotation

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í.

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

Inverse

Trả về ngược lại của CFrame .

Lợi Nhuận

Lerp

Trả về một CFrame kết hợp giữa chính nó và goal bởi phần số alpha .

Tham Số

goal: CFrame
alpha: number

Lợi Nhuận

Orthonormalize

Trả về một bản sao bình thường hóa của CFrame .Thuộc tính BasePart.CFrame tự động áp dụng ortonormalization, nhưng các API khác mà sử dụng CFrames không, vì vậy phương pháp này thỉnh thoảng cần thiết khi cập nhật tăng dần một CFrame và sử dụng nó với chúng.

Lợi Nhuận

ToWorldSpace

Nhận một hoặc nhiều CFrame đối tượng và trả lại chúng được biến đổi từ đối tượng sang không gian thế giới. Tương đương với:

CFrame * cf

Tham Số

Lợi Nhuận

ToObjectSpace

Nhận một hoặc nhiều CFrame đối tượng và trả lại chúng được biến đổi từ thế giới sang không gian đối tượng. Tương đương với:

CFrame:Inverse() * cf

Tham Số

Lợi Nhuận

PointToWorldSpace

Nhận một hoặc nhiều Vector3 đối tượng và trả lại chúng được biến đổi từ đối tượng sang không gian thế giới. Tương đương với:

CFrame * v3

Tham Số

Lợi Nhuận

PointToObjectSpace

Nhận một hoặc nhiều Vector3 đối tượng và trả lại chúng được biến đổi từ thế giới sang không gian đối tượng. Tương đương với:

CFrame:Inverse() * v3

Tham Số

Lợi Nhuận

VectorToWorldSpace

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. Tương đương với:

(CFrame - CFrame.Position) * v3

Tham Số

Lợi Nhuận

VectorToObjectSpace

Nhận một hoặc nhiều đối tượng Vector3 và trả lại chúng được xoay từ không gian thế giới sang không gian đối tượng. Tương đương với:

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

Tham Số

Lợi Nhuận

GetComponents

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ó.

Lợi Nhuận

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ố

Giá Trị Mặc Định: Enum.RotationOrder.XYZ

Lợi Nhuận

ToEulerAnglesXYZ

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 .

Lợi Nhuận

ToEulerAnglesYXZ

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 .

Lợi Nhuận

ToOrientation

Tương đương với CFrame:ToEulerAnglesYXZ() .

Lợi Nhuận

ToAxisAngle

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.

Lợi Nhuận

components

Tương đương với CFrame:GetComponents() .

Lợi Nhuận

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.

Tham Số

other: CFrame
epsilon: number
Giá Trị Mặc Định: 0.00001 (1e-5)

Lợi Nhuận

Phép Toán


Sản xuất một mới CFrame đại diện cho sự kết hợp của hai CFrames .


Sản xuất một Vector3 biến đổi từ đối tượng sang điểm định vị thế giới.


Sản xuất một CFrame được dịch sang không gian thế giới bởi Vector3 .


Sản xuất một CFrame được dịch trong không gian thế giới bởi negative Vector3 .