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.

2D 좌표계와 2D 변형

소개

이는 사용 가능한 2D 좌표계 및 내장된 2D 변환에 대한 자세한 개요입니다. 기본 개념은 :ref:`doc_viewport_and_canvas_transforms`에서 다룹니다.

Transform2D <class_Transform2D>`은 좌표를 한 좌표계에서 다른 좌표계로 변환하는 행렬입니다. 이를 사용하려면 Godot에서 어떤 좌표계를 사용할 수 있는지 아는 것이 좋습니다. 더 깊은 이해를 위해 :ref:`doc_matrices_and_transforms 튜토리얼은 기본 기능에 대한 통찰력을 제공합니다.

Godot 2D 좌표계

다음 그래픽은 Godot 2D 좌표계와 사용 가능한 노드 변환, 변환 기능 및 좌표계 관련 기능에 대한 개요를 제공합니다. 왼쪽에는 OS Window Manager 화면이 있고, 오른쪽에는 CanvasItems, SubViewportContainer, ParallaxLayer 및 :ref:`ParallaxBackground<class_ParallaxBackground>`가 포함되지 않습니다.

그래픽은 Root Window (embed Windows)Window (don't embed Windows)CanvasLayerCanvasItemCanvasItemCanvasItem 형식의 노드 트리를 기반으로 합니다. 깊게 중첩된 창 및 하위 뷰포트와 같이 더 복잡한 조합이 가능하지만 이 예에서는 일반적인 방법론에 대한 개요를 제공합니다.

../../_images/transforms_overview.webp

확대하려면 그래픽을 클릭하세요.

  • 다음 좌표

    이는 :ref:`CanvasItem <class_CanvasItem>`의 로컬 좌표계입니다.

  • 다음 좌표

    이는 상위 *CanvasItem*의 로컬 좌표계입니다. *Canvas*에 *CanvasItems*를 배치할 때 일반적으로 상위 *CanvasItems*의 변환을 상속합니다. :ref:`CanvasItems.top_level <class_CanvasItem_property_top_level>`은 예외입니다.

  • 이전 좌표

    이전 튜토리얼 :ref:`doc_canvas_layers`에서 언급했듯이 캔버스에는 두 가지 유형(뷰포트 캔버스와 CanvasLayer 캔버스)이 있으며 둘 다 캔버스 좌표계를 가지고 있습니다. 이를 세계 좌표라고도 합니다. *뷰포트*에는 좌표계가 서로 다른 여러 *캔버스*가 포함될 수 있습니다.

  • 다음 좌표

    이것은 :ref:`뷰포트 <class_Viewport>`의 좌표계입니다.

  • 다음 좌표

    이는 3D 카메라 광선 투영과 같은 기능을 위해 내부적으로만 사용됩니다.

  • 임베더 좌표/화면 좌표

    씬 트리의 모든 뷰포트*(*창 또는 SubViewport)는 다른 노드 또는 OS 창 관리자에 내장되어 있습니다. 이 좌표계의 원점은 Window 또는 *SubViewport*의 왼쪽 상단 모서리와 동일하며 해당 축척은 임베더 또는 OS 창 관리자 중 하나입니다.

    임베더가 OS 창 관리자인 경우 화면 좌표라고도 합니다.

  • 절대 임베더 좌표/절대 화면 좌표

    이 좌표계의 원점은 내장된 노드 또는 OS 창 관리자 화면의 왼쪽 상단입니다. 그 규모는 임베더나 OS Window Manager 중 하나입니다.

    임베더가 OS 창 관리자인 경우 절대 화면 좌표라고도 합니다.

늘이기 변형(Stretch transform)

언급된 각 노드에는 하나 이상의 변환이 연관되어 있으며 이러한 노드의 조합은 서로 다른 좌표계 간의 변환을 유추합니다. 몇 가지 예외를 제외하고 변환은 :ref:`Transform2D <class_Transform2D>`이며 다음 목록은 각 변환의 세부 정보와 효과를 보여줍니다.

  • 캔버스 변형

    CanvasItems*는 *Control-노드 또는 Node2D-노드입니다.

    Control 노드의 경우 이 변환은 상위 원점을 기준으로 positionrotation.

    Node2D 노드의 경우 transform, rotationskew.

    변환은 항목 자체와 일반적으로 하위*CanvasItems*에도 영향을 미치며 *SubViewportContainer*의 경우 포함된 *SubViewport*에도 영향을 미칩니다.

  • 캔버스 변형

    CanvasLayer의 :ref:`transform <class_CanvasLayer_property_transform>`은 CanvasLayer 내의 모든 CanvasItems*에 영향을 미칩니다. *뷰포트*의 다른 *CanvasLayers 또는 *Windows*에는 영향을 주지 않습니다.

  • CanvasLayer는 뷰포트 변환을 따릅니다

    follow 뷰포트 변환*은 자동으로 계산된 변환이며, 이는 *뷰포트 canvas 변환CanvasLayer의 follow 뷰포트를 기반으로 합니다. scale, :ref:`enabled <class_CanvasLayer_property_follow_viewport_enabled>`인 경우 의사 3D 효과를 얻기 위해 사용할 수 있습니다. *CanvasLayer 변환*과 동일한 자식 노드에 영향을 미칩니다.

  • 뷰포트 캔버스 변형

    :ref:`canvas 변환 <class_Viewport_property_canvas_transform>`은 *뷰포트*의 기본 캔버스에 있는 모든 *CanvasItems*에 영향을 미칩니다. 뷰포트 변환을 따르는 *CanvasLayers*에도 영향을 미칩니다. *뷰포트*의 활성 :ref:`Camera2D <class_Camera2D>`은 이 변환을 변경하여 작동합니다. 이 *뷰포트*의 내장형 *Windows*에는 영향을 미치지 않습니다.

  • 뷰포트 전역 캔버스 변형

    뷰포트에는 전역 캔버스 변형(또한 :ref:"Transform2D <class_Transform2D>도)이 있습니다. 이는 모든 각각의 Canvas Layer 변형에 영향을 미치는 마스터 변형입니다. 일반적으로 이 변형은 별로 쓸모가 없지만 Godot 편집기의 CanvasItem 편집기에서 사용된다.

  • 뷰포트 늘이기 변형

    마지막으로 *뷰포트*에는 뷰포트의 크기를 조정하거나 늘릴 때 사용되는 *늘이기 변환*이 있습니다. 이 변환은 doc_multiple_resolutions`에 설명된 대로 :ref:`Windowssize_2d_override, rotationskew.

  • 창 변형

    :ref:`doc_multiple_resolutions`에 설명된 대로 콘텐츠의 크기를 조정하고 위치를 지정하기 위해 각 :ref:`Window <class_Window>`에는 창 변환*이 포함되어 있습니다. 예를 들어 *뷰포트*가 고정된 종횡비로 표시되도록 *창 측면의 검은색 막대를 담당합니다.

  • 창 위치

    모든 창*에는 임베더 내의 위치를 설명하는 :ref:`position <class_Window_property_position>`도 있습니다. 임베더는 다른 *뷰포트 또는 OS 창 관리자일 수 있습니다.

  • SubViewportContainer 수축 변형

    :ref:`stretch <class_SubViewportContainer_property_stretch>`와 함께 :ref:`stretch_shrink <class_SubViewportContainer_property_stretch_shrink>`는 *SubViewportContainer*에 대해 선언하고 포함된 *SubViewport*가 컨테이너 크기에 비해 어떤 정수 인자로 확장되어야 하는지를 선언합니다.