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...
Sistemi di coordinate 2D e trasformazioni 2D
Introduzione
Questa è una panoramica dettagliata dei sistemi di coordinate 2D disponibili e delle trasformazioni 2D integrate. I concetti di base sono trattati in Trasformazioni di viewport e di canvas.
I Transform2D sono matrici che convertono le coordinate da un sistema di coordinate a un altro. Per utilizzarle, è utile sapere quali sistemi di coordinate sono disponibili in Godot. Per comprenderli meglio, il tutorial Matrici e trasformazioni tratta a fondo le caratteristiche interne.
Sistemi di coordinate 2D di Godot
Il seguente grafico offre una panoramica dei sistemi di coordinate 2D di Godot e delle trasformazioni dei nodi, delle funzioni di trasformazione e delle funzioni riguardo il sistema di coordinate disponibili. A sinistra si trova la schermata del Gestore di finestre del sistema operativo, a destra si trovano i CanvasItem. Per semplicità, questo grafico non include SubViewport, SubViewportContainer, ParallaxLayer e ParallaxBackground, i quali influenzano anch'essi le trasformazioni.
Il grafico si basa su un albero di nodi con la seguente forma: Window radice (incorpora finestre) ⇒ Window (non incorpora finestre) ⇒ CanvasLayer ⇒ CanvasItem ⇒ CanvasItem ⇒ CanvasItem. Sono possibili combinazioni più complesse, come nodi Window e SubViewport profondamente annidati, tuttavia questo esempio intende fornire una panoramica generale della metodologia.
Cliccare sul grafico per ingrandire.
- Coordinate di elemento
Questo è il sistema di coordinate locale di un CanvasItem.
- Coordinate di elemento genitore
Questo è il sistema di coordinate locali del CanvasItem padre. Quando si posizionano i CanvasItem nel Canvas, di solito ereditano le trasformazioni dei loro CanvasItem padre. Un'eccezione avviene tramite CanvasItems.top_level.
- Coordinate di canvas
Come accennato nel tutorial Canvas layers precedente, esistono due tipi di canvas (quello Viewport e quello CanvasLayer) ed entrambi hanno un sistema di coordinate canvas. Queste sono anche chiamate coordinate globali. Una Viewport può contenere più Canvas con sistemi di coordinate diversi.
- Coordinate di viewport
Questo è il sistema di coordinate della Viewport.
- Coordinate di telecamera
Questo è utilizzato internamente solo per funzionalità quali le proiezioni dei raggi dalla telecamera 3D.
- Coordinate di incorporatore / Coordinate di schermo
Ogni Viewport (Window o SubViewport) nell'albero di scene è incorporato in un nodo diverso o nel Gestore di finestre dell'OS. L'origine di questo sistema di coordinate è identica all'angolo superiore sinistro del Window o della SubViewport e la sua scala è quella dell'embedder o del Gestore di finestre dell'OS.
Se l'embedder è il gestore delle finestre del sistema operativo, allora sono anche dette coordinate dello schermo.
- Coordinate assolute di incorporatore / Coordinate assolute di schermo
L'origine di questo sistema di coordinate è l'angolo superiore sinistro del nodo incorporante o della schermata del Gestore di finestre dell'OS. La sua scala è quella del nodo incorporante o del Gestore di finestre dell'OS.
Se l'embedder è il gestore di finestre dell'OS, allora sono anche dette coordinate assolute dello schermo.
Trasformazioni dei nodi
Ciascuno dei nodi menzionati hanno una o più trasformazioni e la combinazione di questi nodi determina le trasformazioni tra i diversi sistemi di coordinate. Con poche eccezioni, le trasformazioni sono Transform2D e l'elenco seguente mostra i dettagli e gli effetti di ciascuna di esse.
- Trasformazione di CanvasItem
I CanvasItem sono nodi Control o nodi Node2D.
Per i nodi Control questa trasformazione consiste in una posizione relativa all'origine del genitore e in una scala e rotazione attorno a un punto di rotazione.
Per i nodi Node2D la proprietà trasformazione è costituito da posizione, rotazione, scala e inclinazione.
La trasformazione influenza l'elemento stesso e solitamente anche sui CanvasItem figlio e, nel caso di un SubViewportContainer, influenza la SubViewport contenuta.
- Trasformazione di CanvasLayer
La trasformazione del CanvasLayer influenza tutti i CanvasItem dentro il CanvasLayer. Non influenza gli altri CanvasLayer o Window nella sua Viewport.
- Trasformazione di CanvasLayer con segui viewport
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.
- Trasformazione di canvas di viewport
La trasformazione del canvas ha effetto su tutti i CanvasItems nel canvas predefinito della Viewport. Ha effetto anche sui CanvasLayer che seguono la trasformazione della viewport. La Camera2D attiva della Viewport funziona modificando questa trasformazione. Non ha effetto sulle finestre incorporate in questa Viewport.
- Trasformazione di canvas globale di viewport
Le Viewport hanno anche una trasformazione globale del canvas. Questa è la trasformazione principale e influenza tutte le singole trasformazioni di Canvas Layer e di finestre incorporate. È utilizzata principalmente nell'editor di CanvasItem di Godot.
- Trasformazione di stiramento di viewport
Finally, Viewports have a stretch transform, which is used when resizing or stretching the viewport. This transform is used for Windows as described in Risoluzioni multiple, 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.
- Trasformazione di finestra
Per ridimensionare e posizionare il contenuto della finestra come descritto in Risoluzioni multiple, ogni finestra contiene una trasformazione di finestra. Ad esempio, questa è responsabile per le barre nere ai lati della finestra, in modo che la viewport sia visualizzata con un rapporto d'aspetto fisso.
- Posizione di finestra
Ogni finestra ha anche una posizione per descriverne la posizione all'interno del suo embedder. L'embedder può essere un'altra viewport o il gestore di finestre del sistema operativo.
- Trasformazione di restringimento di SubViewportContainer
stretch insieme a stretch_shrink dichiarano per un SubViewportContainer se e di quale fattore intero la SubViewport contenuta deve essere ridimensionata rispetto alle dimensioni del contenitore.