CFrame

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tipe data CFrame , pendek untuk frame koordinat , menggambarkan posisi dan orientasi 3D.Ini terdiri dari komponen posisional dan komponen rotasi dan termasuk operasi aritmatik penting untuk bekerja dengan data 3D di Roblox.


-- Buat CFrame di posisi tertentu dan rotasi Euler
local cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)

Untuk pengantar ke jenis data CFrame , lihat CFrames .

Komponen Posisional

Komponen posisional tersedia sebagai Vector3.Selain itu, komponen posisi objek CFrame juga tersedia di X , Y dan Z properti seperti Vector3 .

Komponen Rotasi

menyimpan data rotasi 3D di matriks rotasi 3×3 .Nilai-nilai ini dikembalikan oleh fungsi CFrame:GetComponents() setelah x , y dan z nilai posisional.Matrix ini digunakan secara internal saat melakukan perhitungan yang melibatkan rotasi, menggunakan radian sebagai unitnya (untuk konversi dari satu ke yang lain, gunakan math.rad() atau math.deg() ).Untuk informasi lebih lanjut tentang cara Roblox Engine melakukan rotasi, lihat Enum.RotationOrder .

Tabel di bawah ini mewakili komponen matriks rotasi objek CFrame dan hubungannya dengan properti vektor yang tersedia seperti LookVector dan RightVector.Meskipun komponen individu dari matriks rotasi jarang berguna sendiri, properti vektor yang berasal dari mereka jauh lebih berguna.


<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
Tidak seperti yang lain, LookVector mewakili komponen kolom yang dieliminasi.The LookVector berguna karena banyak Instances seperti Camera dan Attachments memperlakukan vektor itu sebagai arah yang ditunjuk oleh instans.

Rangkuman

Konstruktor

Properti

Metode

Operasi Matematika

Konstruktor

new

Membuat identitas kosong CFrame .

new

Kembalikan CFrame dengan tidak ada rotasi dengan posisi Vector3 yang disediakan.

Parameter

pos: Vector3

new

Kembalikan baru CFrame terletak di pos dan menghadap ke lookAt , asumsi bahwa (0, 1, 0) dianggap "naik" di ruang dunia.

Konstruktor overload ini telah digantikan oleh CFrame.lookAt() , yang mencapai tujuan serupa. Tetap ada demi kompatibilitas mundur.

Pada sudut tinggi (sekitar 82 derajat), Anda mungkin mengalami ketidakstabilan numerik.Jika ini adalah masalah, atau jika Anda membutuhkan vektor "up" yang berbeda, gunakan CFrame.fromMatrix() untuk lebih akurat membangun CFrame .Selain itu, jika lookAt berada langsung di atas pos (sudut pitch 90 derajat), vektor "atas" beralih ke sumbu X.

Parameter

pos: Vector3
lookAt: Vector3

new

Kembalikan CFrame dengan posisi yang terdiri dari komponen x , y , dan z yang disediakan.

Parameter

new

Kembalikan sebuah CFrame dari posisi ( x , y , z ) dan kuarterion ( qX , qY , qZ , qW ).Quaternion diharapkan menjadi panjang unit untuk mewakili rotasi yang valid.Jika ini bukan kasusnya, kuarterion akan di normalisasi.

Parameter

new

Membuat CFrame dari posisi ( x , y , z ) dengan orientasi yang ditentukan oleh matriks rotasi.

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

Parameter

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

lookAt

Kembalikan baru CFrame dengan posisi at dan menghadap ke lookAt , secara opsional menyediakan arah ke atas ( up ) dengan default (0, 1, 0) .

Parameter

lookAt: Vector3
Nilai Default: Vector3.yAxis

lookAlong

Kembalikan baru CFrame dengan posisi at dan menghadap di sepanjang direction , secara opsional menyediakan arah ke atas ( up ) dengan default (0, 1, 0) .

Konstruktor ini setara dengan CFrame.lookAt(at, at + direction).

Parameter

direction: Vector3
Nilai Default: Vector3.yAxis

fromRotationBetweenVectors

Kembalikan CFrame yang mewakili orientasi yang diperlukan untuk berputar dari pertama Vector3 ke kedua, dengan posisi diatur ke nol.

Parameter

from: Vector3

Vektor yang mewakili arah "dari".

Vektor yang mewakili arah "ke" .

fromEulerAngles

Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian.Rotasi diterapkan dalam opsional Enum.RotationOrder dengan default XYZ , setara dengan:


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

Parameter

rx: number
ry: number
rz: number
Nilai Default: Enum.RotationOrder.XYZ

fromEulerAnglesXYZ

Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian menggunakan Enum.RotationOrder.XYZ , setara dengan:


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

Parameter

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian menggunakan Enum.RotationOrder.YXZ , setara dengan:


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

Parameter

rx: number
ry: number
rz: number

Angles

Setara dengan fromEulerAnglesXYZ() .

Parameter

rx: number
ry: number
rz: number

fromOrientation

Setara dengan fromEulerAnglesYXZ() .

Parameter

rx: number
ry: number
rz: number

fromAxisAngle

Kembalikan berputar CFrame dari unit Vector3 dan rotasi dalam radian.

Parameter

fromMatrix

Kembalikan CFrame dari terjemahan dan kolom matriks rotasi.Jika vZ dikecualikan, kolom ketiga dihitung sebagai vX:Cross(vY).Unit .

Parameter

pos: Vector3

Posisi 3D dari CFrame .

Setara dengan RightVector .

Setara dengan UpVector .

Setara dengan - LookVector.

Properti

identity

Identitas CFrame tanpa terjemahan atau rotasi.Properti ini adalah konstan konstan dan harus diakses secara global daripada melalui objek individu CFrame.

Position

Posisi 3D dari CFrame .

Rotation

Salinan dari CFrame tanpa terjemahan.

Koordinat X dari posisi.

Koordinat Y dari posisi.

Koordinat Z dari posisi.

LookVector

Komponen arah depan dari orientasi objek , setara dengan kolom ketiga yang dibatalkan dari matriks rotasi.


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)

Menambahkan CFrame objek LookVector ke dalam dirinya sendiri menghasilkan CFrame dipindahkan ke depan ke arah mana pun yang dihadapinya dengan 1 unit.

RightVector

Komponen arah kanan dari orientasi objek CFrame . Setara dengan XVector atau kolom pertama dari matriks rotasi.


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

Komponen arah atas dari orientasi objek CFrame . Setara dengan YVector atau kolom kedua dari matriks rotasi.


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

Komponen X dari orientasi objek CFrame . Setara dengan RightVector atau kolom pertama dari matriks rotasi.


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

Komponen Y dari orientasi objek CFrame . Setara dengan UpVector atau kolom kedua dari matriks rotasi.


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

Komponen Z dari orientasi objek CFrame . Setara dengan negatif LookVector atau kolom ketiga dari matriks rotasi.


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)

Metode

Inverse

Kembalikan kebalikan dari CFrame .

Memberikan nilai

Lerp

Kembalikan CFrame di antara dirinya dan goal oleh fraksi alpha .

Parameter

goal: CFrame
alpha: number

Memberikan nilai

Orthonormalize

Kembalikan salinan ortonormalisasi dari CFrame.Properti BasePart.CFrame memiliki otomatis menerapkan ortonormalisasi, tetapi API lain yang mengambil CFrames tidak melakukannya, jadi metode ini terkadang diperlukan saat secara bertahap memperbarui CFrame dan menggunakannya dengan mereka.

Memberikan nilai

ToWorldSpace

Menerima satu atau lebih objek CFrame dan mengembalikannya dikubah dari objek ke ruang dunia. Sama dengan:

CFrame * cf

Parameter

Memberikan nilai

ToObjectSpace

Menerima satu atau lebih objek CFrame dan mengembalikannya diubah dari ruang dunia ke ruang objek. Sama dengan:

CFrame:Inverse() * cf

Parameter

Memberikan nilai

PointToWorldSpace

Menerima satu atau lebih objek Vector3 dan mengembalikannya dikubah dari objek ke ruang dunia. Sama dengan:

CFrame * v3

Parameter

Memberikan nilai

PointToObjectSpace

Menerima satu atau lebih objek Vector3 dan mengembalikannya diubah dari ruang dunia ke ruang objek. Sama dengan:

CFrame:Inverse() * v3

Parameter

Memberikan nilai

VectorToWorldSpace

Menerima satu atau lebih objek Vector3 dan mengembalikannya diputar dari objek ke ruang dunia. Sama dengan:

(CFrame - CFrame.Position) * v3

Parameter

Memberikan nilai

VectorToObjectSpace

Menerima satu atau lebih objek Vector3 dan mengembalikannya diputar dari ruang dunia ke ruang objek. Sama dengan:

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

Parameter

Memberikan nilai

GetComponents

Kembalikan nilai , , , , , , , , , dan , di mana ‑ ‑ ‑ ‑ mewakili posisi matriks rotasi 3×3.

Memberikan nilai

ToEulerAngles

Kembali menghasilkan sudut aproksimal yang bisa digunakan untuk menghasilkan CFrame menggunakan opsi Enum.RotationOrder .Jika Anda tidak memberikan order, metode menggunakan Enum.RotationOrder.XYZ.

Parameter

Nilai Default: Enum.RotationOrder.XYZ

Memberikan nilai

ToEulerAnglesXYZ

Kembali menghasilkan sudut aproksimal yang dapat digunakan untuk menghasilkan CFrame menggunakan Enum.RotationOrder.XYZ .

Memberikan nilai

ToEulerAnglesYXZ

Kembali menghasilkan sudut aproksimal yang dapat digunakan untuk menghasilkan CFrame menggunakan Enum.RotationOrder.YXZ .

Memberikan nilai

ToOrientation

Memberikan nilai

ToAxisAngle

Kembalikan tuple dari Vector3 dan angka yang mewakili rotasi CFrame di representasi sudut sumbu.

Memberikan nilai

components

Setara dengan CFrame:GetComponents() .

Memberikan nilai

FuzzyEq

Kembalikan true jika yang lain CFrame cukup dekat dengan ini CFrame di posisi dan rotasi.Nilai epsilon digunakan untuk mengontrol toleransi untuk kemiripan ini; nilai ini opsional dan harus menjadi nilai positif kecil jika diberikan.Kemiripan untuk posisi adalah komponen-wise saat rotasi menggunakan aproksimasi cepat dari perbedaan sudut.

Parameter

other: CFrame
epsilon: number
Nilai Default: 0.00001 (1e-5)

Memberikan nilai

AngleBetween

Kembalikan sudut, dalam radian, antara orientasi satu CFrame dan lainnya.Fungsi ini tidak mengambil posisi CFrame ke dalam pertimbangan dan hanya melihat orientasi relatif.

Parameter

other: CFrame

Memberikan nilai

Operasi Matematika


Memproduksi baru CFrame yang mewakili komposisi dari dua CFrames .


Memproduksi Vector3 berubah dari objek ke koordinat dunia.


Memproduksi CFrame terjemahan di ruang dunia oleh Vector3.


Memproduksi CFrame terjemahan di ruang dunia oleh negatif Vector3 .