CFrame
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Der 데이터 eingeben, kurz für Koordinatenrahmen, beschreibt eine 3D-Position und Orientierung.Es besteht aus einer positionalen Komponente und einer rotierenden Komponente und beinhaltet wesentliche arithmetische Operationen für die Arbeit mit 3D-Daten auf Roblox.
-- Erstellen Sie ein CFrame an einer bestimmten Position und Euler-Rotationlocal cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)
Für eine Einführung in den CFrame Daten eingeben, siehe CFrames.
Positionskomponente
Die positäre Komponente ist als Vector3 verfügbar.Darüber hinaus sind die Komponenten der Position eines CFrame Objekts auch in den Eigenschaften X , Y und Z wie ein Vector3 verfügbar.
Drehkomponente
CFrame speichert 3D-Rotationsdaten in einer 3×3 Rotationsmatrix .Diese Werte werden von der CFrame:GetComponents() Funktion nach den x , y und z positionalen Werten zurückgegeben.Diese Matrix wird intern verwendet, wenn Berechnungen mit Rotationen durchgeführt werden, und verwendet Radian als ihre Einheit (für die Umwandlung von einer in die andere verwende math.rad() oder math.deg() ).Für weitere Informationen darüber, wie die Roblox-Engine Rotationen ausführt, siehe Enum.RotationOrder .
Die Tabelle unten repräsentiert die Komponenten der Rotationsmatrix eines CFrame Objekts und ihre Beziehung zu den verfügbaren Vektoreigenschaften wie LookVector und RightVector.Obwohl die einzelnen Bestandteile der Rotationsmatrix selten von selbst nützlich sind, sind die Vektoreigenschaften, die daraus abgeleitet werden, viel nützlicher.
<th>YVector, Aufvektor</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, Rechtsvector |
---|
Zusammenfassung
Konstrukteure
- new()
Gibt eine leere Identität zurück CFrame .
Gibt eine CFrame mit keiner Rotation mit der Position des bereitgestellten Vector3 zurück.
Gibt eine CFrame mit der Position des ersten Vector3 und einer Orientierung zurück, die auf das zweite zeigt.
Gibt eine CFrame mit einer Position zurück, die aus den bereitgestellten x, y und z Komponenten besteht.
Gibt eine CFrame aus der Position ( x, y, z, qX ) und ein Quartett ( qY, qZ, qW ) zurück.
Gibt eine CFrame von der Position ( x , y , z ) mit einer Orientierung zurück, die von der Rotationsmatrix angegeben wird.
Gibt eine CFrame mit der Position des ersten Vector3 und einer Orientierung zurück, die auf das zweite zeigt.
Gibt eine CFrame mit der Position des ersten Vector3 und einer Orientierung entlang der zweiten zurück
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Gibt eine CFrame zurück, die die Orientierung darstellt, die zum Drehen von der ersten Vector3 auf die zweite erforderlich ist, mit der Position auf Null gesetzt.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
Gibt eine gedrehte CFrame von Winkeln rx , ry und rz in Radianen zurück.Drehungen werden im optionalen Enum.RotationOrder mit einem Standard von XYZ angewendet.
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Gibt eine gedrehte CFrame von Winkeln rx , ry und rz in Radianen zurück, die mit Enum.RotationOrder.XYZ verwendet werden.
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Gibt eine gedrehte CFrame von Winkeln rx , ry und rz in Radianen zurück, die mit Enum.RotationOrder.YXZ verwendet werden.
Äquivalent zu fromEulerAnglesXYZ().
- fromOrientation(rx : number,ry : number,rz : number)
Äquivalent zu fromEulerAnglesYXZ().
- fromAxisAngle(v : Vector3,r : number)
Gibt eine gedrehte CFrame von einer Einheit Vector3 und eine Rotation in Radien zurück.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Gibt eine CFrame von einer Übersetzung und die Spalten einer Rotationsmatrix zurück.
Eigenschaften
Eine Identität CFrame ohne Übersetzung oder Rotation.
Die 3D-Position des CFrame.
Eine Kopie der CFrame ohne Übersetzung.
Die X-Koordinate der Position.
Die Y-Koordinate der Position.
Die Z-Koordinate der Position.
Die vorwärtsgerichtete Komponente der Orientierung des CFrame Objekts, gleich der negierten Form von ZVector.
Die rechte Komponente der Orientierung des CFrame Objekts.
Die Aufwärtsrichtungskomponente der Orientierung des CFrame Objekts.
Äquivalent zu RightVector.
Äquivalent zu UpVector.
Die Z-Komponente der Orientierung des CFrame -Objekts. Äquivalent zur dritten Spalte der Rotationsmatrix.
Methoden
Gibt das Gegenteil von der CFrame zurück.
Gibt eine CFrame zurück, die zwischen sich und goal durch die Bruchteil alpha interpoliert wurde.
Gibt eine ortonormalisierte Kopie der CFrame zurück.
Erhält ein oder mehrere CFrame Objekte und gibt sie zurück, die von Objekt auf Platztransformiert wurden.
Erhält ein oder mehrere CFrame Objekte und gibt sie zurück, die von der Welt in den Platztransformiert wurden.
Erhält ein oder mehrere Vector3 Objekte und gibt sie zurück, die von Objekt auf Platztransformiert wurden.
Erhält ein oder mehrere Vector3 Objekte und gibt sie zurück, die von der Welt in den Platztransformiert wurden.
Erhält ein oder mehrere Vector3 Objekte und gibt sie zurück, die von Objekt auf Platzgedreht wurden.
Erhält ein oder mehrere Vector3 Objekte und gibt sie zurück, die von der Welt auf den Platzgedreht wurden.
Gibt die Werte , , , , , , , , , , und zurück, wo zurück, wo zurück, wo wo wo wo wo wo wo wo wo wo <1
Gibt annähernde Winkel zurück, die verwendet werden könnten, um die CFrame mit dem optionalen Enum.RotationOrder zu generieren.
Gibt annähernde Winkel zurück, die verwendet werden könnten, um die CFrame mit Enum.RotationOrder.XYZ zu generieren.
Gibt annähernde Winkel zurück, die verwendet werden könnten, um die CFrame mit Enum.RotationOrder.YXZ zu generieren.
Äquivalent zu CFrame:ToEulerAnglesYXZ().
Gibt eine Tuplizität von einem Vector3 und einer Zahl zurück, die die Rotation des CFrame in der Achsenwinkeldarstellung darstellen.
Äquivalent zu CFrame:GetComponents().
Gibt true zurück, wenn der andere CFrame in Position und Rotation diesem CFrame nahe genug ist.
Mathe-Operationen
Konstrukteure
new
Gibt eine neue CFrame zurück, die sich an pos befindet und in Richtung lookAt ausgerichtet ist, unter der Annahme, dass (0, 1, 0) in PlatzWelt als "oben" betrachtet wird.
Diese Konstruktionsüberladung wurde durch CFrame.lookAt() ersetzt, die ein ähnliches Ziel verfolgt. Sie bleibt aus Gründen der Rückwärtskompatibilität.
Bei hohen Neigungswinkeln (um 82 Grad) kannst du numerische Instabilität erleben.Wenn dies ein Problem ist oder wenn Sie einen anderen "oben"Vektorkraftbenötigen, verwenden Sie CFrame.fromMatrix(), um den CFrame genauer zu konstruieren.Zusätzlich, wenn lookAt direkt über pos (Neigungswinkel von 90 Grad) ist, wechselt der "auf"-Vektor in die X-Achse.
new
Gibt eine CFrame aus der Position ( x, y, z, qX ) und ein Quartett ( qY, qZ, qW ) zurück.Es wird erwartet, dass das Quartett der Einheitslänge entspricht, um eine gültige Rotation zu repräsentieren.Wenn dies nicht der Fall ist, wird das Quartett normalisiert.
new
Erstellt eine CFrame von der Position ( x , y , z ) mit einer Orientierung, die von der Rotationsmatrix angegeben wird.
[[R00 R01 R02] [R10 R11 R12] [R20 R21 R22]]
lookAlong
Gibt eine neue CFrame mit der Position von at und der Richtung nach direction zurück, optional mit Angabe der Aufwärtsrichtung ( up ) mit einem Standard von (0, 1, 0).
Dieser Konstruktor entspricht CFrame.lookAt(at, at + direction).
fromEulerAngles
Gibt eine gedrehte CFrame von Winkeln rx , ry und rz in Radianen zurück.Rotierungen werden im optionalen Enum.RotationOrder mit einem Standard von XYZ angewendet, entspricht:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parameter
fromEulerAnglesXYZ
Gibt eine gedrehte CFrame von Winkeln rx , ry und rz in Radianen zurück, die mit Enum.RotationOrder.XYZ entspricht:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Gibt eine gedrehte CFrame von Winkeln rx , ry und rz in Radianen zurück, die mit Enum.RotationOrder.YXZ entspricht:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
fromMatrix
Gibt eine CFrame von einer Übersetzung und die Spalten einer Rotationsmatrix zurück.Wenn vZ ausgeschlossen wird, wird die dritte Spalte als vX:Cross(vY).Unit berechnet.
Parameter
Äquivalent zu RightVector.
Äquivalent zu - LookVector.
Eigenschaften
LookVector
Die vorwärtsrichtungs-Komponente der Orientierung des CFrame Objekts, gleich der negierten ZVector oder der negierten dritten Säule der Rotationsmatrix.
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)
Das Hinzufügen eines CFrame Objekts LookVector an sich selbst erzeugt eine CFrame nach vorne verschoben in die Richtung, in die es sich dreht, um 1 Einheit.
RightVector
Die rechtsgerichtete Komponente der Orientierung des CFrame Objekts. Äquivalent zu XVector oder der ersten Spalte der Rotationsmatrix.
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
Die Aufwärtskomponente der Orientierung des CFrame Objekts. Äquivalent zu YVector oder der zweiten Spalte der Rotationsmatrix.
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
Die X-Komponente der Orientierung des CFrame Objekts. Äquivalent zu RightVector oder der ersten Spalte der Rotationsmatrix.
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
Die Y-Komponente der Orientierung des CFrame -Objekts. Äquivalent zu UpVector oder der zweiten Spalte der Rotationsmatrix.
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
Die Z-Komponente der Orientierung des CFrame Objekts. Äquivalent zum negierten LookVector oder der dritten Spalte der Rotationsmatrix.
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)
Methoden
Orthonormalize
Gibt eine ortonormalisierte Kopie der CFrame zurück.Die BasePart.CFrame Eigenschaft wendet automatisch Orthonormalisierung an, aber andere APIs, die CFrames verwenden, tun es nicht, daher ist diese Methode bei der inkretischen Aktualisierung eines CFrame und seiner Verwendung mit ihnen gelegentlich notwendig.
Rückgaben
ToEulerAngles
Gibt annähernde Winkel zurück, die verwendet werden könnten, um die CFrame mit dem optionalen Enum.RotationOrder zu generieren.Wenn du nicht order bereitstellst, verwendet die Methode Enum.RotationOrder.XYZ.
Parameter
FuzzyEq
Gibt true zurück, wenn der andere CFrame in Position und Rotation diesem CFrame nahe genug ist.Der Wert epsilon wird verwendet, um die Toleranz für diese Ähnlichkeit zu kontrollieren; dieser Wert ist optional und sollte bei Angabe ein kleiner positiver Wert sein.Die Ähnlichkeit für die Position ist komponentenweise, während die Rotation eine schnelle Annäherung des Winkelunterschieds verwendet.