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.

Sistemas de coordenadas 2D e transformações 2D

Introdução

Esta é uma visão geral detalhada dos sistemas de coordenadas 2D e transformações 2D integrados disponíveis. Os conceitos básicos são abordados em Transformações de janela de exibição e tela.

As Transform2D são matrizes que convertem coordenadas de um sistema de coordenadas para outro. Para usá-las, é benéfico saber quais sistemas de coordenadas estão disponíveis no Godot. Para uma compreensão mais profunda, o tutorial Matrizes e transformações oferece informações sobre a funcionalidade subjacente.

Sistemas de coordenadas 2D do Godot

O gráfico a seguir fornece uma visão geral dos sistemas de coordenadas 2D do Godot e as transformações de nós, funções de transformação e funções relacionadas ao sistema de coordenadas disponíveis. À esquerda está a tela do Gerenciador de Janelas do S.O., à direita estão os CanvasItems. Por razões de simplicidade, este gráfico não inclui SubViewport, SubViewportContainer, ParallaxLayer e ParallaxBackground, todos os quais também influenciam as transformações.

O gráfico é baseado em uma árvore de nós da seguinte forma: Janela Raiz (incorporar Janelas)Janela (não incorporar Janelas)CanvasLayerCanvasItemCanvasItemCanvasItem. Combinações mais complexas são possíveis, como Janelas e SubViewports profundamente aninhados, no entanto, este exemplo pretende fornecer uma visão geral da metodologia em geral.

../../_images/transforms_overview.webp

Clique no gráfico para ampliar.

  • Coordenadas de Item

    Este é o sistema de coordenadas local de um CanvasItem.

  • Coordenadas de Item Pai

    Este é o sistema de coordenadas local do CanvasItem pai. Ao posicionar CanvasItems no Canvas, eles geralmente herdam as transformações de seus CanvasItems pais. Uma exceção é CanvasItems.top_level.

  • Coordenadas de Canvas

    Como mencionado no tutorial anterior Camadas de canvas, existem dois tipos de telas (tela de Viewport e tela de CanvasLayer) e ambas têm um sistema de coordenadas de tela (canvas). Estas também são chamadas de coordenadas de mundo. Um Viewport pode conter múltiplos Canvases com diferentes sistemas de coordenadas.

  • Coordenadas de Viewport

    Este é o sistema de coordenadas do Viewport.

  • Coordenadas de Câmera

    Isso é usado apenas internamente para funcionalidades como projeções de raios de câmera 3D.

  • Coordenadas do Incorporador / Coordenadas de Tela

    Cada Viewport (Window ou SubViewport) na árvore de cenas está incorporado em um nó diferente ou no Gerenciador de Janelas do S.O. A origem deste sistema de coordenadas é idêntica ao canto superior esquerdo da Window ou SubViewport e sua escala é a do incorporador ou do Gerenciador de Janelas do S.O.

    Se o incorporador for o Gerenciador de Janelas do S.O., elas também são chamadas de Coordenadas de Tela.

  • Coordenadas Absolutas do Incorporador / Coordenadas Absolutas de Tela

    A origem deste sistema de coordenadas é o canto superior esquerdo do nó incorporador ou da tela do Gerenciador de Janelas do S.O. Sua escala é a do incorporador ou do Gerenciador de Janelas do S.O.

    Se o incorporador for o Gerenciador de Janelas do S.O., elas também são chamadas de Coordenadas Absolutas de Tela.

Transformações de nó

Cada um dos nós mencionados possui uma ou mais transformações associadas a eles e a combinação desses nós infere as transformações entre os diferentes sistemas de coordenadas. Com poucas exceções, as transformações são Transform2D e a lista a seguir mostra detalhes e efeitos de cada uma delas.

  • Transformação de CanvasItem

    CanvasItems são nós Control ou nós Node2D.

    Para nós Control, essa transformação consiste em uma posição relativa à origem do pai e uma escala e rotação em torno de um ponto de pivô.

    Para nós Node2D, a transformação consiste em posição, rotação, escala e inclinação (skew).

    A transformação afeta o próprio item e geralmente também os CanvasItems filhos e, no caso de um SubViewportContainer, afeta o SubViewport contido.

  • Transformação de CanvasLayer

    A transformação do CanvasLayer afeta todos os CanvasItems dentro do CanvasLayer. Ela não afeta outros CanvasLayers ou Windows em seu Viewport.

  • Transformação de seguir viewport do CanvasLayer

    A transformação de seguir viewport é uma transformação calculada automaticamente, baseada na transformação de tela do Viewport e na escala de seguir viewport do CanvasLayer e pode ser usada, se ativada, para alcançar um efeito pseudo-3D. Ela afeta os mesmos nós filhos que a transformação do CanvasLayer.

  • Transformação de canvas de Viewport

    A transformação de tela afeta todos os CanvasItems na tela padrão do Viewport. Ela também afeta os CanvasLayers que têm a transformação de seguir viewport ativada. A Camera2D ativa do Viewport funciona alterando essa transformação. Ela não afeta as Windows incorporadas deste Viewport.

  • Transformação global de canvas de Viewport

    Viewports também possuem uma transformação de canvas global. Esta é a transformação mestre e afeta todas as transformações individuais de Canvas Layer e Window incorporadas. Isso é usado principalmente no Editor de CanvasItem do Godot.

  • Transformação de estiramento da Viewport

    Finalmente, os Viewports possuem uma transformação de esticamento (stretch transform), que é usada ao redimensionar ou esticar o viewport. Essa transformação é usada para Windows conforme descrito em Resoluções múltiplas, mas também pode ser definida manualmente em SubViewports por meio de size e size_2d_override. Sua translação, rotação e inclinação são os valores padrão e ela só pode ter escala não padrão.

  • Transformação da Janela

    Para dimensionar e posicionar o conteúdo da Window conforme descrito em Resoluções múltiplas, cada Window contém uma transformação de janela. Ela é, por exemplo, responsável pelas barras pretas nas laterais da Window para que o Viewport seja exibido com uma proporção (aspect ratio) fixa.

  • Posição da Janela

    Toda Window também possui uma posição para descrever sua posição dentro de seu incorporador. O incorporador can pode ser outro Viewport ou o Gerenciador de Janelas do S.O.

  • Transformação de encolhimento do SubViewportContainer

    stretch junto com stretch_shrink declaram para um SubViewportContainer se e por qual fator inteiro o SubViewport contido deve ser dimensionado em comparação com o tamanho do contêiner.