CFrame

Veraltete anzeigen

*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-Rotation
local 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
Im Gegensatz zu den anderen repräsentiert LookVector die negierten Kolumnenkomponenten.Der Datentyp.CFrame.LookVector|LookVector ist nützlich, weil viele Klasse.Instance|Instanzen wie die Klasse.Camera|Kamera und Klasse.Attachment|Anhänge diesen Vektor als die Richtung betrachten, auf die sich die Instanz zeigt.

Zusammenfassung

Konstrukteure

Eigenschaften

Methoden

Mathe-Operationen

Konstrukteure

new

Erstellt eine leere Identität CFrame.

new

Gibt eine CFrame mit keiner Rotation mit der Position des bereitgestellten Vector3 zurück.

Parameter

pos: Vector3

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.

Parameter

pos: Vector3
lookAt: Vector3

new

Gibt eine CFrame mit einer Position zurück, die aus den bereitgestellten x, y und z Komponenten besteht.

Parameter

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.

Parameter

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]]

Parameter

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

lookAt

Gibt eine neue CFrame mit der Position von at und der Richtung nach lookAt zurück, optional mit Angabe der Aufwärtsrichtung ( up ) mit einem Standard von (0, 1, 0).

Parameter

lookAt: Vector3
Standardwert: Vector3.yAxis

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).

Parameter

direction: Vector3
Standardwert: Vector3.yAxis

fromRotationBetweenVectors

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.

Parameter

from: Vector3

Vektor, der die Richtung "von" darstellt.

Vektor, der die Richtung "zu" darstellt.

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

Parameter

rx: number
ry: number
rz: number
Standardwert: Enum.RotationOrder.XYZ

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

Parameter

rx: number
ry: number
rz: number

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

Parameter

rx: number
ry: number
rz: number

Angles

Äquivalent zu fromEulerAnglesXYZ().

Parameter

rx: number
ry: number
rz: number

fromOrientation

Äquivalent zu fromEulerAnglesYXZ().

Parameter

rx: number
ry: number
rz: number

fromAxisAngle

Gibt eine gedrehte CFrame von einer Einheit Vector3 und eine Rotation in Radien zurück.

Parameter

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

pos: Vector3

Die 3D-Position des CFrame.

Äquivalent zu RightVector.

Äquivalent zu UpVector.

Äquivalent zu - LookVector.

Eigenschaften

identity

Eine Identität CFrame ohne Übersetzung oder Rotation.Diese Eigenschaft ist eine konstante und muss global zugänglich sein, anstatt durch ein einzelnes CFrame.

Position

Die 3D-Position des CFrame.

Rotation

Eine Kopie der CFrame ohne Übersetzung.

Die X-Koordinate der Position.

Die Y-Koordinate der Position.

Die Z-Koordinate der Position.

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

Inverse

Gibt das Gegenteil von der CFrame zurück.

Rückgaben

Lerp

Gibt eine CFrame zurück, die zwischen sich und goal durch die Bruchteil alpha interpoliert wurde.

Parameter

goal: CFrame
alpha: number

Rückgaben

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

ToWorldSpace

Erhält ein oder mehrere CFrame Objekte und gibt sie transformiert von Objekt auf Platzzurück. Äquivalent zu:

CFrame * cf

Parameter

Rückgaben

ToObjectSpace

Erhält ein oder mehrere CFrame Objekte und gibt sie transformiert von der Welt zum Platzzurück. Äquivalent zu:

CFrame:Inverse() * cf

Parameter

Rückgaben

PointToWorldSpace

Erhält ein oder mehrere Vector3 Objekte und gibt sie transformiert von Objekt auf Platzzurück. Äquivalent zu:

CFrame * v3

Parameter

Rückgaben

PointToObjectSpace

Erhält ein oder mehrere Vector3 Objekte und gibt sie transformiert von der Welt zum Platzzurück. Äquivalent zu:

CFrame:Inverse() * v3

Parameter

Rückgaben

VectorToWorldSpace

Erhält ein oder mehrere Vector3 Objekte und gibt sie gedreht von Objekt auf Platzzurück. Äquivalent zu:

(CFrame - CFrame.Position) * v3

Parameter

Rückgaben

VectorToObjectSpace

Erhält ein oder mehrere Vector3 Objekte und gibt sie gedreht von der Welt zum Platzzurück. Äquivalent zu:

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

Parameter

Rückgaben

GetComponents

Gibt die Werte , , , , , , , , , , und zurück, wo zurück, wo zurück, wo wo wo wo wo wo wo wo wo wo <1

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

Standardwert: Enum.RotationOrder.XYZ

ToEulerAnglesXYZ

Gibt annähernde Winkel zurück, die verwendet werden könnten, um die CFrame mit Enum.RotationOrder.XYZ zu generieren.

ToEulerAnglesYXZ

Gibt annähernde Winkel zurück, die verwendet werden könnten, um die CFrame mit Enum.RotationOrder.YXZ zu generieren.

ToOrientation

ToAxisAngle

Gibt eine Tuplizität von einem Vector3 und einer Zahl zurück, die die Rotation des CFrame in der Achsenwinkeldarstellung darstellen.

Rückgaben

components

Äquivalent zu CFrame:GetComponents().

Rückgaben

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.

Parameter

other: CFrame
epsilon: number
Standardwert: 0.00001 (1e-5)

Rückgaben

Mathe-Operationen


Erzeugt ein neues CFrame repräsentierend die Zusammensetzung der beiden CFrames.


Erzeugt eine Vector3 transformierte von Objekt zu Weltkoordinaten.


Erzeugt eine CFrame übersetzt im Weltraum durch die Vector3.


Erzeugt eine CFrame übersetzt in Weltraum durch das Negative Vector3.