CFrame
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Typ danych CFrame opisuje 3D pozycję i orientację, krótki dla ramy koordynacyjnej .Składa się z komponentu pozycyjnego i komponentu rotacyjnego i obejmuje istotne operacje arytmetyczne do pracy z danymi 3D na Roblox.
-- Utwórz CFrame w określonej pozycji i rotacji Eulerlocal cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
Aby uzyskać wprowadzenie do typu danych CFrame , zobacz CFrames .
Komponent pozycyjny
Komponent pozycyjny jest dostępny jako Vector3.Ponadto pozycja komponentów obiektu CFrame jest również dostępna w właściwościach X , Y i Z takich jak Vector3 .
Komponent obrotowy
CFrame przechowuje dane o rotacji 3D w 3×3 matrycy rotacji .Te wartości są zwracane przez funkcję CFrame:GetComponents() po wartościach pozycyjnych x , y i z.Ta matryca jest używana wewnętrznie przy wykonywaniu obliczeń związanych z rotacjami, używając radianów jako jednostki (do konwersji z jednej na drugą użyj math.rad() lub math.deg() ).Aby uzyskać więcej informacji o tym, jak silnik Roblox wykonuje rotacje, zobacz Enum.RotationOrder .
Tabela poniżej reprezentuje komponenty matrycy rotacji obiektu CFrame i ich związek z dostępnymi właściwościami wektora, takimi jak LookVector i RightVector.Chociaż poszczególne składniki matrycy rotacji rzadko są samodzielnie przydatne, właściwości wektorów, które z nich wynikają, są znacznie bardziej przydatne.
<th>Vektor Y, w górę vectora</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, PrawyVector |
---|
Podsumowanie
Konstruktorzy
- new()
Zwraca pustą tożsamość CFrame.
Wyświetla CFrame z pozycją pierwszego Vector3 i orientacją wskazaną na drugie.
Zwraca CFrame z pozycją składającą się z dostarczonych x, y i z komponentów.
Zwraca CFrame z pozycji ( x, y, z, qX, qY, qZ, qW ).
Wyświetla CFrame z pozycji ( x , y , z ) z orientacją określoną przez matrycę rotacji.
Wyświetla CFrame z pozycją pierwszego Vector3 i orientacją wskazaną na drugie.
Wyświetla CFrame z pozycją pierwszego Vector3 i orientacją wzdłuż drugiego.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Zwraca CFrame reprezentujący orientację potrzebną do obrotu od pierwszej Vector3 do drugiej, z pozycją ustawioną na zero.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Zwraca obrócony CFrame z kątów rx , ry i rz w stopniach.Rotacje są stosowane w opcjonalnym Enum.RotationOrder z domyślnym XYZ .
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Zwraca obrócony CFrame z kątów rx , ry i rz w stopniach za pomocą Enum.RotationOrder.XYZ .
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Zwraca obrócony CFrame z kątów rx , ry i rz w stopniach za pomocą Enum.RotationOrder.YXZ .
Równoważne z fromEulerAnglesXYZ().
- fromOrientation(rx : number,ry : number,rz : number)
Równoważne z fromEulerAnglesYXZ().
- fromAxisAngle(v : Vector3,r : number)
Zwraca obrócony CFrame z jednostki Vector3 i rotację w stopniach.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Zwraca CFrame z tłumaczenia i kolumny matrycy rotacji.
Właściwości
Tożsamość bez tłumaczenia ani rotacji.
Pozycja 3D CFrame .
Kopia CFrame bez tłumaczenia.
Koordynata X pozycji.
Koordynata Y pozycji.
Koordynata Z pozycji.
Komponent kierunku przodowego obiektu CFrame orientacji, odpowiadający odmiennej formie ZVector .
Komponent właściwego kierunku orientacji obiektu CFrame .
Komponent kierunku w górę z orientacji obiektu CFrame.
Równoważne z RightVector.
Równoważne z UpVector.
Komponent Z orientacji obiektu CFrame, równy trzeciej kolumnie matrycy rotacji.
Metody
Zwraca odwrotność CFrame.
Wyświetla CFrame pomiędzy sobą a goal przez frakcję alpha.
Zwraca uproszczoną kopię CFrame .
Otrzymuje jeden lub więcej obiektów CFrame i zwraca je przekształcone z obiektu na przestrzeń świata.
Otrzymuje jeden lub więcej obiektów CFrame i zwraca je przekształcone z świata do przestrzeni obiektów.
Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je przekształcone z obiektu na przestrzeń świata.
Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je przekształcone z świata do przestrzeni obiektów.
Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je obrócone od obiektu do przestrzeni świata.
Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je obrócone z świata do przestrzeni obiektów.
Wyświetla wartości x , y , z , R00 , R01 , R02 , R10 , R11 , R12 , R20 , R21 , i R22 , gdzie x``y``z reprezentują pozycję matrycy rotacji CFrame i R00 - R22 reprezentują jej rotację 3×3.
Zwraca przybliżone kąty, które mogą być użyte do generowania CFrame za pomocą opcjonalnego Enum.RotationOrder.
Zwraca przybliżone kąty, które mogą być użyte do generowania CFrame za pomocą Enum.RotationOrder.XYZ.
Zwraca przybliżone kąty, które mogą być użyte do generowania CFrame za pomocą Enum.RotationOrder.YXZ.
Równoważne z CFrame:ToEulerAnglesYXZ().
Zwraca tuple pary Vector3 i liczbę, która reprezentuje rotację CFrame w reprezentacji kąta osi.
Równoważne z CFrame:GetComponents().
Wyświetla true jeśli drugi CFrame jest wystarczająco bliski temu CFrame w pozycji i rotacji.
Zwraca kąt, w radiach, między orientacją jednego CFrame a drugiego.
Działania matematyczne
Konstruktorzy
new
Zwraca nowy CFrame położony w pos i skierowany w kierunku lookAt, zakładając, że (0, 1, 0) jest uważany za "w górze" w przestrzeni świata.
Ten nadmiar konstruktora został zastąpiony przez CFrame.lookAt(), który osiąga podobny cel. Pozostaje ze względu na kompatybilność wsteczną.
Ponadto przy wysokich kątach nachylenia (około 82 stopni) możesz doświadczyć niestabilności liczbowej.Jeśli jest to problem, lub jeśli potrzebujesz innego wektora "w górę", użyj CFrame.fromMatrix() , aby dokładniej skonstruować CFrame.Ponadto, jeśli lookAt jest bezpośrednio nad pos (kątem nachylenia 90 stopni), przełącznik wektora "w górę" przełącza się na osię X.
fromEulerAngles
Zwraca obrócony CFrame z kątów rx , ry i rz w stopniach.Rotacje są stosowane w opcjonalnym Enum.RotationOrder z domyślnym XYZ, odpowiadającym:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parametry
fromEulerAnglesXYZ
Zwraca obrócony CFrame z kątów rx , ry i rz w stopniach za pomocą Enum.RotationOrder.XYZ , równoznaczny z:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Zwraca obrócony CFrame z kątów rx , ry i rz w stopniach za pomocą Enum.RotationOrder.YXZ , równoznaczny z:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Zwraca CFrame z tłumaczenia i kolumny matrycy rotacji.Jeśli vZ jest wykluczone, trzecia kolumna jest obliczana jako vX:Cross(vY).Unit .
Parametry
Równoważne z RightVector.
Równoważne z - LookVector.
Właściwości
LookVector
Komponent kierunku przodowego obiektu CFrame, odpowiadający negowanej ZVector lub negowanej trzeciej kolumnie matrycy rotacji.
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)
Dodanie CFrame obiektu LookVector do siebie produkuje CFrame przesunięte w przód w dowolnym kierunku, w którym się znajduje, o 1 jednostkę.
RightVector
Komponent właściwego kierunku orientacji obiektu CFrame . Równoznaczny z XVector lub pierwszą kolumną matrycy rotacji.
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
Komponent kierunku w górę składający się na orientację obiektu CFrame . Równoznaczny z YVector lub drugą kolumną matrycy rotacji.
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
Komponent X orientacji obiektu CFrame lub pierwszej kolumny matrycy rotacji. Równoznaczny z RightVector lub pierwszą kolumną matrycy rotacji.
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
Komponent Y orientacji obiektu CFrame lub drugiej kolumny matrycy rotacji. Równoznaczny z UpVector lub drugą kolumną matrycy rotacji.
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
Komponent Z orientacji obiektu CFrame, równoznaczny z odrzuconym LookVector lub trzecią kolumną matrycy rotacji.
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)
Metody
ToEulerAngles
Zwraca przybliżone kąty, które mogą być użyte do generowania CFrame za pomocą opcjonalnego Enum.RotationOrder.Jeśli nie dostarczysz order, metoda używa Enum.RotationOrder.XYZ.
Parametry
FuzzyEq
Wyświetla true jeśli drugi CFrame jest wystarczająco bliski temu CFrame w pozycji i rotacji.Wartość epsilon jest używana do kontroli tolerancji dla tej podobności; ta wartość jest opcjonalna i powinna być małą pozytywną wartością, jeśli jest podana.Podobieństwo dla pozycji jest komponentowe, podczas gdy rotacja wykorzystuje szybką aproximację różnicy kąta.