Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
2D-Koordinatensysteme und 2D-Transformationen
Einführung
Dies ist ein detaillierter Überblick über die verfügbaren Built-in-2D-Koordinatensysteme und -2D-Transformationen. Die grundlegenden Konzepte werden in Viewport- und Canvas-Transformationen behandelt.
Transform2D are matrices that convert coordinates from one coordinate system to another. In order to use them, it is beneficial to know which coordinate systems are available in Godot. For a deeper understanding, the Matrizen und Transformationen tutorial offers insights to the underlying functionality.
Godot 2D-Koordinatensysteme
Die folgende Grafik gibt einen Überblick über die Godot-2D-Koordinatensysteme und die verfügbaren Node-Transformationen, Transformations-Funktionen und koordinatensystembezogenen Funktionen. Links ist der Bildschirm des OS Window Managers zu sehen, rechts sind die CanvasItems. Der Einfachheit halber enthält diese Grafik keine SubViewport, SubViewportContainer, ParallaxLayer und ParallaxBackground, die alle auch Transformationen beeinflussen.
Die Grafik basiert auf einem Node-Baum der folgenden Form: Root-Fenster (Fenster einbetten) ⇒ Fenster (keine Fenster einbetten) ⇒ CanvasLayer ⇒ CanvasItem ⇒ CanvasItem ⇒ CanvasItem. Es sind noch komplexere Kombinationen möglich, wie z.B. tief verschachtelte Fenster und SubViewports, dieses Beispiel soll jedoch einen Überblick über die Methodik im Allgemeinen geben.
Zum Vergrößern auf die Grafik klicken.
- Element-Koordinaten
Dies ist das lokale Koordinatensystem eines CanvasItem.
- Koordinaten des übergeordneten Elements
Dies ist das lokale Koordinatensystem des übergeordneten CanvasItems. Wenn CanvasItems im Canvas positioniert werden, erben sie normalerweise die Transformationen ihrer übergeordneten CanvasItems. Eine Ausnahme ist CanvasItems.top_level.
- Canvas-Koordinaten
Wie im vorangegangenen Tutorial Canvas-Ebenen erwähnt, gibt es zwei Arten von Canvases (Viewport-Canvas und CanvasLayer-Canvas) und beide haben ein Canvas-Koordinatensystem. Diese werden auch Weltkoordinaten genannt. Ein Viewport kann mehrere Canvases mit unterschiedlichen Koordinatensystemen enthalten.
- Viewport-Koordinaten
Dies ist das Koordinatensystem des Viewport.
- Kamerakoordinaten
Dies wird nur intern für Funktionen wie 3D-Kamerastrahlenprojektionen verwendet.
- Embedder-Koordinaten / Bildschirmkoordinaten
Jeder Viewport (Fenster oder SubViewport) im Szenenbaum ist entweder in einem anderen Node oder im OS Window Manager eingebettet. Der Ursprung dieses Koordinatensystems ist identisch mit der linken oberen Ecke des Fensters oder SubViewports und sein Maßstab ist der des Embedders oder des OS Window Managers.
Wenn der Embedder der OS Window Manager ist, werden sie auch Bildschirmkoordinaten genannt.
- Absolute Embedder-Koordinaten / Absolute Bildschirmkoordinaten
Der Ursprung dieses Koordinatensystems ist die linke obere Ecke des einbettenden Nodes oder des OS Window Manager-Bildschirms. Sein Maßstab ist der des Embedders oder des OS Window Managers.
Wenn der Embedder der OS Window Manager ist, werden sie auch als absolute Bildschirmkoordinaten bezeichnet.
Node-Transformationen
Jedem der genannten Nodes sind eine oder mehrere Transformationen zugeordnet, und aus der Kombination dieser Nodes lassen sich die Transformationen zwischen den verschiedenen Koordinatensystemen ableiten. Bis auf wenige Ausnahmen handelt es sich bei den Transformationen um Transform2D, und die folgende Liste enthält Einzelheiten und Auswirkungen der einzelnen Transformationen.
- CanvasItem-Transformation
CanvasItems sind entweder Control-Nodes oder Node2D-Nodes.
Für Control-Nodes besteht diese Transformation aus einer Position relativ zum Ursprung des Parent-Nodes und einer Skalierung und Rotation um einen Pivotpunkt.
Für Node2D-Nodes besteht transform aus Position, Rotation, Skalierung und Skew.
Die Transformation wirkt sich auf das Element selbst und in der Regel auch auf untergeordnete CanvasItems und im Falle eines SubViewportContainers auf den enthaltenen SubViewport aus.
- CanvasLayer-Transformation
Die Transformation des CanvasLayers betrifft alle CanvasItems innerhalb der CanvasLayer. Sie wirkt sich nicht auf andere CanvasLayer oder Fenster in ihrem Viewport aus.
- CanvasLayer folgt der Viewport-Transformation
The follow viewport transform is an automatically calculated transform, that is based on the Viewport's canvas transform and the CanvasLayer's follow viewport scale and can be used, if enabled, to achieve a pseudo-3D effect. It affects the same child nodes as the CanvasLayer transform.
- Viewport-Canvas-Transformation
Die Canvas-Transformation wirkt sich auf alle CanvasItems im Standard-Canvas des Viewports aus. Sie wirkt sich auch auf CanvasLayers aus, die ihre Viewport-Transformation aktiviert haben. Die aktive Camera2D des Viewports funktioniert, indem sie diese Transformation ändert. Sie wirkt sich nicht auf die eingebetteten Fenster dieses Viewports aus.
- Viewport-globale Canvas-Transformation
Viewports haben auch eine globale Canvas-Transformation. Dies ist die Master-Transformation und beeinflusst alle individuellen Canvas-Ebenen und eingebetteten Fenster-Transformationen. Sie wird hauptsächlich im CanvasItem-Editor von Godot verwendet.
- Viewport-Stretch-Transformation
Finally, Viewports have a stretch transform, which is used when resizing or stretching the viewport. This transform is used for Windows as described in Mehrere Auflösungen, but can also be manually set on SubViewports by means of size and size_2d_override. Its translation, rotation and skew are the default values and it can only have non-default scale.
- Fenstertransformation
Um den Inhalt des Fensters wie in Mehrere Auflösungen beschrieben zu skalieren und zu positionieren, enthält jedes Fenster eine Fenstertransformation. Sie ist z.B. für die schwarzen Balken an den Seiten des Fensters verantwortlich, damit der Viewport mit einem festen Seitenverhältnis dargestellt wird.
- Fensterposition
Jedes Fenster hat auch eine position-Property, um seine Position innerhalb seines Embedders zu beschreiben. Die Einbettungsstelle kann ein anderer Viewport oder der OS Window Manager sein.
- SubViewportContainer Shrink-Transformation
Die stretch-Property zusammen mit der stretch_shrink-Property deklarieren für einen SubViewportContainer, ob und um welchen Integer-Faktor das enthaltene SubViewport im Vergleich zur Containergröße skaliert werden soll.