CFrame
*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 Eulerlocal 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 |
---|
Rangkuman
Konstruktor
- new()
Kembalikan identitas kosong CFrame .
Kembalikan CFrame dengan tidak ada rotasi dengan posisi Vector3 yang disediakan.
Kembalikan CFrame dengan posisi dari yang pertama Vector3 dan orientasi yang menunjuk ke yang kedua.
Kembalikan CFrame dengan posisi yang terdiri dari komponen x , y , dan z yang disediakan.
Kembalikan sebuah CFrame dari posisi ( x , y , z ) dan kuarterion ( qX , qY , qZ , qW ).
Kembalikan CFrame dari posisi ( x , y , z ) dengan orientasi yang ditentukan oleh matriks rotasi.
Kembalikan CFrame dengan posisi dari yang pertama Vector3 dan orientasi yang menunjuk ke yang kedua.
Kembalikan CFrame dengan posisi dari yang pertama Vector3 dan orientasi yang diparahkan di sepanjang kedua.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Kembalikan CFrame yang mewakili orientasi yang diperlukan untuk berputar dari pertama Vector3 ke kedua, dengan posisi diatur ke nol.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian.Rotasi diterapkan dalam opsional Enum.RotationOrder dengan default XYZ .
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian menggunakan Enum.RotationOrder.XYZ .
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian menggunakan Enum.RotationOrder.YXZ .
Setara dengan fromEulerAnglesXYZ() .
- fromOrientation(rx : number,ry : number,rz : number)
Setara dengan fromEulerAnglesYXZ() .
- fromAxisAngle(v : Vector3,r : number)
Kembalikan berputar CFrame dari unit Vector3 dan rotasi dalam radian.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Kembalikan CFrame dari terjemahan dan kolom matriks rotasi.
Properti
Identitas CFrame tanpa terjemahan atau rotasi.
Posisi 3D dari CFrame .
Salinan dari CFrame tanpa terjemahan.
Koordinat X dari posisi.
Koordinat Y dari posisi.
Koordinat Z dari posisi.
Komponen arah depan dari orientasi objek CFrame , setara dengan bentuk yang dieliminasi dari ZVector .
Komponen arah kanan dari orientasi objek CFrame .
Komponen arah atas dari orientasi objek CFrame .
Setara dengan RightVector .
Setara dengan UpVector .
Komponen Z dari orientasi objek CFrame . Setara dengan kolom ketiga dari matriks rotasi.
Metode
Kembalikan kebalikan dari CFrame .
Kembalikan CFrame di antara dirinya dan goal oleh fraksi alpha .
Kembalikan salinan ortonormalisasi dari CFrame.
Menerima satu atau lebih objek CFrame dan mengembalikannya berubah dari objek ke ruang dunia.
Menerima satu atau lebih objek CFrame dan mengembalikannya diubah dari ruang dunia ke ruang objek.
Menerima satu atau lebih objek Vector3 dan mengembalikannya berubah dari objek ke ruang dunia.
Menerima satu atau lebih objek Vector3 dan mengembalikannya diubah dari ruang dunia ke ruang objek.
Menerima satu atau lebih objek Vector3 dan mengembalikannya diputar dari objek ke ruang dunia.
Menerima satu atau lebih objek Vector3 dan mengembalikannya diputar dari ruang dunia ke ruang objek.
Kembalikan nilai , , , , , , , , , dan , di mana ‑ ‑ ‑ ‑ mewakili posisi matriks rotasi 3×3.
Kembali menghasilkan sudut aproksimal yang bisa digunakan untuk menghasilkan CFrame menggunakan opsi Enum.RotationOrder .
Kembali menghasilkan sudut aproksimal yang dapat digunakan untuk menghasilkan CFrame menggunakan Enum.RotationOrder.XYZ .
Kembali menghasilkan sudut aproksimal yang dapat digunakan untuk menghasilkan CFrame menggunakan Enum.RotationOrder.YXZ .
Setara dengan CFrame:ToEulerAnglesYXZ() .
Kembalikan tuple dari Vector3 dan angka yang mewakili rotasi CFrame di representasi sudut sumbu.
Setara dengan CFrame:GetComponents() .
Kembalikan true jika yang lain CFrame cukup dekat dengan ini CFrame di posisi dan rotasi.
Kembalikan sudut, dalam radian, antara orientasi satu CFrame dan lainnya.
Operasi Matematika
Konstruktor
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.
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).
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) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parameter
fromEulerAnglesXYZ
Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian menggunakan Enum.RotationOrder.XYZ , setara dengan:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Kembalikan berputar CFrame dari sudut rx , ry , dan rz di radian menggunakan Enum.RotationOrder.YXZ , setara dengan:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Kembalikan CFrame dari terjemahan dan kolom matriks rotasi.Jika vZ dikecualikan, kolom ketiga dihitung sebagai vX:Cross(vY).Unit .
Parameter
Setara dengan RightVector .
Setara dengan - LookVector.
Properti
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
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
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
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.