CFrame
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
CFrame veri türü, koordinat çerçevesi kısaltmasıyla, 3B konum ve yönünü tanımlar.Bir pozisyonel bileşen ve bir döndürülebilir bileşenden oluşur ve Roblox'ta 3B verilerle çalışmak için gerekli aritmetik işlemleri içerir.
-- Belirli bir konumda bir CFrame ve Euler dönüşü oluşturlocal cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
CFrame veri türüne bir giriş için, CFrames görün.
Pozisyonel Bileşen
Pozisyonel bileşen bir Vector3 olarak mevcuttur.Ayrıca, bir CFrame nesnenin konumunun bileşenleri de bir X , Y ve Z özellikleri gibi bir Vector3 gibi bir özellikte mevcuttur.
Döner Bileşen
CFrame 3D dönüş verilerini 3×3 bir dönüş matrisi içinde saklar.Bu değerler, x , y ve z pozisyonel değerlerden sonra CFrame:GetComponents() fonksiyonu tarafından geri döndürülür.Bu matris, dönüşleri içeren hesaplamalar yaparken içeride kullanılır, birim olarak radyandan kullanır (birinden diğerine dönüşüm için, math.rad() veya math.deg() kullanın).Roblox Motorunun dönüşleri nasıl gerçekleştirdiğine dair daha fazla bilgi için, bakın Enum.RotationOrder .
Aşağıdaki tablo, bir CFrame nesnenin dönüş matrisinin bileşenlerini ve LookVector ve RightVector gibi mevcut vektör özellikleriyle ilişkilerini temsil eder.Döndürme matrisinin bileşenleri nadiren kendi başına yararlı olsa da, onlardan türeyen vektör özellikleri çok daha yararlıdır.
<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, SağVector |
---|
Özet
Yapılandırıcılar
- new()
Boş bir kimlik döndürür CFrame .
Verilen Vector3 konumuyla hiçbir dönüşüm olmadan bir CFrame döndürür.
İlk Vector3 konumuyla bir CFrame ve ikinciye doğru bir yön işaret eden bir yönelim ile döndürür.
Verilen CFrame , x ve y bileşenlerinden oluşan bir pozisyon ile birlikte bir z döndürür.
Konumdan CFrame , x , y ve z dörtlü döndürür ve kuadrans ( qX , qY , qZ , qW ).
Döndürür bir pozisyondan , , ) dönüşüm matrisi tarafından belirlenen bir yönle çıkarır ve pozisyonla ilgili bir yön belirtir.
İlk Vector3 konumuyla bir CFrame ve ikinciye doğru bir yön işaret eden bir yönelim ile döndürür.
İlk Vector3 konumuyla bir CFrame ve ikinci boyunca yönlendirilen bir yönelimle geri döndürür.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Döndürülmesi gereken yönü temsil eden bir CFrame ı içerir, ilk Vector3 'dan ikinci sürüklemeye, pozisyon sıfıra ayarlanmış olarak.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Açılardan CFrame döndürülmüş bir rx ve ry ve rz radyandan döndürülmüş bir döndürür.Döndürmeler, varsayılan bir Enum.RotationOrder ile seçilen XYZ 'de uygulanır.
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Açılardan döndürülmüş bir , ve radyandaki radyandan kullanarak radyandaki döndürür.
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Açılardan döndürülmüş bir , ve radyandaki radyandan kullanarak radyandaki döndürür.
fromEulerAnglesXYZ() eşdeğer.
- fromOrientation(rx : number,ry : number,rz : number)
fromEulerAnglesYXZ() eşdeğer.
- fromAxisAngle(v : Vector3,r : number)
Bir birimden CFrame döndürülmüş bir Vector3 ve radyandaki bir dönüş alır.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Bir çeviriden ve bir dönüşüm matrisinin sütunlarından bir CFrame döndürür.
Özellikler
Tercüme veya dönüşüm olmadan bir kimlik CFrame .
CFrame 'nin 3B konumu.
Tercüme olmadan CFrame kopyası.
Konumun X koordinatı.
Konumun Y koordinatı.
Konumun Z koordinatı.
CFrame nesnenin ileri yön bileşeni, ZVector 'nin reddedilmiş haliyle eşdeğerdir.
CFrame nesnenin yönünün sağ yön bileşeni.
CFrame nesnenin yönünün yukarı yön bileşeni.
RightVector eşdeğer.
UpVector eşdeğer.
CFrame nesnenin yönünün Z bileşeni. Rotasyon matrisinin üçüncü sütununa eşdeğer.
Yöntemler
CFrame 'nin tersini döndürür.
Kendisi ve goal kesir tarafından arasında yerleştirilen bir alpha arasında bir CFrame döndürür.
CFrame 'nin ortonormalize edilmiş bir kopyasını döndürür.
Bir veya daha fazla CFrame nesne alır ve nesneden dünya uzayına dönüştürülmüş olarak geri verir.
Bir veya daha fazla CFrame nesne alır ve onları dünyadan nesne alanına dönüştürülmüş olarak geri verir.
Bir veya daha fazla Vector3 nesne alır ve nesneden dünya uzayına dönüştürülmüş olarak geri verir.
Bir veya daha fazla Vector3 nesne alır ve onları dünyadan nesne alanına dönüştürülmüş olarak geri verir.
Bir veya daha fazla Vector3 nesne alır ve nesneden dünya uzayına döndürülmüş olarak geri verir.
Bir veya daha fazla Vector3 nesne alır ve dünyadan nesne alanına döndürülmüş olarak geri verir.
Değerleri , , , , , , , , , , ve , nerede ve ve <
Seçilen CFrame kullanarak üretilebilecek yaklaşık açıları döndürür. Enum.RotationOrder kullanarak üretilebilecek yaklaşık açıları döndürür.
Kullanarak yaratılabilecek yaklaşık açıları döndürür kullanarak ile oluşturmak için.
Kullanarak yaratılabilecek yaklaşık açıları döndürür kullanarak ile oluşturmak için.
CFrame:ToEulerAnglesYXZ() eşdeğer.
Bir eksen-açı temsilinde Vector3 dönüşünü temsil eden bir dizi ve CFrame eksen açı temsilinde dönüşü temsil eden bir sayı döndürür.
CFrame:GetComponents() eşdeğer.
Diğer CFrame yeterince bu CFrame konuma ve döndürmeye yakınsa, true döndürür.
Bir CFrame ve diğerinin yönü arasındaki açıyı radyandan döndürür.
Matematik İşlemleri
Yapılandırıcılar
new
Dünya uzayında "yukarı" olarak kabul edilen düşünülerek yeni bir bulunur ve yönünde yerleştirilir, çünkü dünya uzayında "aşağı" olarak kabul edilir.
Bu yapıcı aşırı yüklenmesi, benzer bir hedefi gerçekleştiren CFrame.lookAt() tarafından değiştirildi, ki bu da geriye dönük uyumluluk için kaldı.
Yüksek eğim açılarında (yaklaşık 82 derece), sayısal istikrarsızlık yaşayabilirsiniz.Bu bir sorun ise veya farklı bir "yukarı" vektörü gerekiyorsa, CFrame.fromMatrix() kullanarak daha doğru bir şekilde CFrame oluşturun.Ayrıca, eğer lookAt doğrudan pos (90 derecelik eğilme açısı) üzerinde ise, "yukarı" vektörü X eksenine geçer.
new
Konumdan CFrame , x , y ve z dörtlü döndürür ve kuadrans ( qX , qY , qZ , qW ).Dörtlü, geçerli bir dönüşü temsil etmek için birim uzunluğunda olması bekleniyor.Eğer durum bu değilse, kuaternasyon normalleştirilecektir.
lookAlong
Yeni bir CFrame ile pozisyonu at ve direction boyunca yükseliş yönünü ( up ) varsayılan olarak belirterek, isteğe bağlı olarak yukarı yönünü ( (0, 1, 0) ) özelleştirir.
Bu yapıcı CFrame.lookAt(at, at + direction) 'ye eşdeğerdir.
fromEulerAngles
Açılardan CFrame döndürülmüş bir rx ve ry ve rz radyandan döndürülmüş bir döndürür.Döndürmeler, varsayılan Enum.RotationOrder ile seçilen XYZ 'e uygulanır, eşdeğer:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parametreler
fromEulerAnglesXYZ
Döndürülmüş CFrame bir açıdan, rx , ve ry ve rz radyandaki radyandan Enum.RotationOrder.XYZ , eşdeğer:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Döndürülmüş CFrame bir açıdan, rx , ve ry ve rz radyandaki radyandan Enum.RotationOrder.YXZ , eşdeğer:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Bir çeviriden ve bir dönüşüm matrisinin sütunlarından bir CFrame döndürür.Eğer vZ dışlanırsa, üçüncü sütun vX:Cross(vY).Unit olarak hesaplanır.
Parametreler
RightVector eşdeğer.
Eşdeğeri - LookVector .
Özellikler
LookVector
CFrame nesnenin ileri yön bileşeni, negatif ZVector veya dönüş matrisinin negatif üçüncü sütununa eşdeğer,
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)
Bir CFrame nesnesinin kendisine LookVector eklenmesi, karşı karşıya olduğu herhangi bir yönde 1 birim ileriye taşındığında bir CFrame üretir.
RightVector
CFrame nesnenin sağ yönlü bileşeninin yönü. XVector veya dönüş matrisinin ilk sütununa eşdeğer.
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
CFrame nesnenin yönüyle ilgili yukarı yön bileşeni. YVector veya dönüş matrisinin ikinci sütununa eşdeğer.
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
CFrame nesnenin yönünün X bileşeni. Rotasyon matrisinin ilk sütununa veya RightVector eşdeğer.
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
nesnenin yönünün Y bileşeni. Rotasyon matrisinin ikinci sütunu veya eşdeğeri ile eşit.
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
CFrame nesnenin yönünün Z bileşeni. Negatif LookVector veya dönüş matrisinin üçüncü sütununa eşdeğer.
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)
Yöntemler
Orthonormalize
CFrame 'nin ortonormalize edilmiş bir kopyasını döndürür.The BasePart.CFrame özelliği otomatik olarak ortonormalizasyon uygular, ancak CFrames alanındaki diğer API'ler bunu yapmaz, bu yüzden bu yöntem, bir CFrame ve onlarla birlikte kullanıldığında zaman zaman gerekli hale gelir.
Dönüşler
ToEulerAngles
Seçilen CFrame kullanarak üretilebilecek yaklaşık açıları döndürür. Enum.RotationOrder kullanarak üretilebilecek yaklaşık açıları döndürür.order sağlamazsanız, yöntem Enum.RotationOrder.XYZ kullanır.
Parametreler
FuzzyEq
Diğer CFrame yeterince bu CFrame konuma ve döndürmeye yakınsa, true döndürür.epsilon değeri, bu benzerliğin toleransını kontrol etmek için kullanılır; bu değer isteğe bağlıdır ve verilirse küçük pozitif bir değer olmalıdır.Pozisyon için benzerlik bileşen bazlıdır ve dönüş, açı farkının hızlı bir yaklaşımını kullanır.