CFrame

Pokaż przestarzałe

*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 Euler
local 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
W przeciwieństwie do innych, LookVector reprezentuje skompresowane komponenty kolumn.Typ danych LookVector jest przydatny, ponieważ wiele Instances takich jak Camera i Attachments traktuje ten wektor jako kierunek, w który wskazuje instancja.

Podsumowanie

Konstruktorzy

Właściwości

Metody

Działania matematyczne

Konstruktorzy

new

Tworzy pustą tożsamość CFrame.

new

Zwraca CFrame bez obrotu z pozycją dostarczonego Vector3 .

Parametry

pos: Vector3

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.

Parametry

pos: Vector3
lookAt: Vector3

new

Zwraca CFrame z pozycją składającą się z dostarczonych x, y i z komponentów.

Parametry

new

Zwraca CFrame z pozycji ( x, y, z, qX, qY, qZ, qW ).Oczekuje się, że kwartet będzie miał długość jednostki, aby reprezentować ważną rotację.Jeśli tak nie jest, kwartał zostanie znormalizowany.

Parametry

new

Tworzy CFrame z pozycji ( x , y , z ) z orientacją określoną przez matrycę rotacji.

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

Parametry

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

lookAt

Zwraca nowy CFrame z pozycją at i skierowany w kierunku lookAt , opcjonalnie określając kierunek w górę ( up ) z domyślnym (0, 1, 0) .

Parametry

lookAt: Vector3
Wartość domyślna: Vector3.yAxis

lookAlong

Wyświetla nowy CFrame z pozycją at i skierowany wzdłuż direction , opcjonalnie określając kierunek w górę ( up ) z domyślnym (0, 1, 0) .

Ten konstruktor jest równoważny z CFrame.lookAt(at, at + direction).

Parametry

direction: Vector3
Wartość domyślna: Vector3.yAxis

fromRotationBetweenVectors

Zwraca CFrame reprezentujący orientację potrzebną do obrotu od pierwszej Vector3 do drugiej, z pozycją ustawioną na zero.

Parametry

from: Vector3

Wektor reprezentujący kierunek "od".

Wektor reprezentujący kierunek "do".

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) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

Parametry

rx: number
ry: number
rz: number
Wartość domyślna: Enum.RotationOrder.XYZ

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) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

Parametry

rx: number
ry: number
rz: number

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) * -- Y
CFrame.fromEulerAngles(rx, 0, 0) * -- X
CFrame.fromEulerAngles(0, 0, rz) -- Z

Parametry

rx: number
ry: number
rz: number

Angles

Równoważne z fromEulerAnglesXYZ().

Parametry

rx: number
ry: number
rz: number

fromOrientation

Równoważne z fromEulerAnglesYXZ().

Parametry

rx: number
ry: number
rz: number

fromAxisAngle

Zwraca obrócony CFrame z jednostki Vector3 i rotację w stopniach.

Parametry

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

pos: Vector3

Pozycja 3D CFrame .

Równoważne z RightVector.

Równoważne z UpVector.

Równoważne z - LookVector.

Właściwości

identity

Tożsamość bez tłumaczenia ani rotacji.Właściwość ta jest stałą konstytucyjną i musi być uzyskiwana globalnie w przeciwieństwie do poprzez pojedynczy obiekt CFrame.

Position

Pozycja 3D CFrame .

Rotation

Kopia CFrame bez tłumaczenia.

Koordynata X pozycji.

Koordynata Y pozycji.

Koordynata Z pozycji.

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

Inverse

Zwraca odwrotność CFrame.

Zwroty

Lerp

Wyświetla CFrame pomiędzy sobą a goal przez frakcję alpha.

Parametry

goal: CFrame
alpha: number

Zwroty

Orthonormalize

Zwraca uproszczoną kopię CFrame .Właściwość BasePart.CFrame automatycznie stosuje ortonormalizację, ale inne interfejsy, które przyjmują CFrames nie robią tego, więc ta metoda jest czasami konieczna przy aktualizacji stopniowo CFrame i używaniu jej z nimi.

Zwroty

ToWorldSpace

Otrzymuje jeden lub więcej obiektów CFrame i zwraca je przekształcone z obiektu na przestrzeń świata. Równoznaczne z:

CFrame * cf

Parametry

Zwroty

ToObjectSpace

Otrzymuje jeden lub więcej obiektów CFrame i zwraca je przekształcone z świata do przestrzeni obiektów. Równoznaczne z:

CFrame:Inverse() * cf

Parametry

Zwroty

PointToWorldSpace

Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je przekształcone z obiektu na przestrzeń świata. Równoznaczne z:

CFrame * v3

Parametry

Zwroty

PointToObjectSpace

Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je przekształcone z świata do przestrzeni obiektów. Równoznaczne z:

CFrame:Inverse() * v3

Parametry

Zwroty

VectorToWorldSpace

Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je obrócone od obiektu do przestrzeni świata. Równoznaczne z:

(CFrame - CFrame.Position) * v3

Parametry

Zwroty

VectorToObjectSpace

Otrzymuje jeden lub więcej obiektów Vector3 i zwraca je obrócone z świata do przestrzeni obiektów. Równoznaczne z:

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

Parametry

Zwroty

GetComponents

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.

Zwroty

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

Wartość domyślna: Enum.RotationOrder.XYZ

ToEulerAnglesXYZ

Zwraca przybliżone kąty, które mogą być użyte do generowania CFrame za pomocą Enum.RotationOrder.XYZ.

ToEulerAnglesYXZ

Zwraca przybliżone kąty, które mogą być użyte do generowania CFrame za pomocą Enum.RotationOrder.YXZ.

ToOrientation

ToAxisAngle

Zwraca tuple pary Vector3 i liczbę, która reprezentuje rotację CFrame w reprezentacji kąta osi.

components

Równoważne z CFrame:GetComponents().

Zwroty

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.

Parametry

other: CFrame
epsilon: number
Wartość domyślna: 0.00001 (1e-5)

Zwroty

AngleBetween

Zwraca kąt, w radiach, między orientacją jednego CFrame a drugiego.Funkcja ta nie bierze pod uwagę pozycji CFrame i patrzy tylko na orientację względną.

Parametry

other: CFrame

Zwroty

Działania matematyczne


Wytwarza nowy CFrame reprezentujący skład dwóch CFrames .


Wytwarza Vector3 przekształcony z obiektu na światowe koordynaty.


Wytwarza CFrame przetłumaczony w przestrzeni świata przez Vector3.


Wytwarza CFrame przetłumaczony w przestrzeni świata przez negatywny Vector3 .