Up to date

This page is up to date for Godot 4.1. If you still find outdated information, please open an issue.

Node2D

Inherits: CanvasItem < Node < Object

Inherited By: AnimatedSprite2D, AudioListener2D, AudioStreamPlayer2D, BackBufferCopy, Bone2D, Camera2D, CanvasGroup, CanvasModulate, CollisionObject2D, CollisionPolygon2D, CollisionShape2D, CPUParticles2D, GPUParticles2D, Joint2D, Light2D, LightOccluder2D, Line2D, Marker2D, MeshInstance2D, MultiMeshInstance2D, NavigationLink2D, NavigationObstacle2D, NavigationRegion2D, ParallaxLayer, Path2D, PathFollow2D, Polygon2D, RayCast2D, RemoteTransform2D, ShapeCast2D, Skeleton2D, Sprite2D, TileMap, TouchScreenButton, VisibleOnScreenNotifier2D

A 2D game object, inherited by all 2D-related nodes. Has a position, rotation, scale, and Z index.

Description

A 2D game object, with a transform (position, rotation, and scale). All 2D nodes, including physics objects and sprites, inherit from Node2D. Use Node2D as a parent node to move, scale and rotate children in a 2D project. Also gives control of the node’s render order.

Tutorials

Properties

Vector2

global_position

float

global_rotation

float

global_rotation_degrees

Vector2

global_scale

float

global_skew

Transform2D

global_transform

Vector2

position

Vector2(0, 0)

float

rotation

0.0

float

rotation_degrees

Vector2

scale

Vector2(1, 1)

float

skew

0.0

Transform2D

transform

Methods

void

apply_scale ( Vector2 ratio )

float

get_angle_to ( Vector2 point ) const

Transform2D

get_relative_transform_to_parent ( Node parent ) const

void

global_translate ( Vector2 offset )

void

look_at ( Vector2 point )

void

move_local_x ( float delta, bool scaled=false )

void

move_local_y ( float delta, bool scaled=false )

void

rotate ( float radians )

Vector2

to_global ( Vector2 local_point ) const

Vector2

to_local ( Vector2 global_point ) const

void

translate ( Vector2 offset )


Property Descriptions

Vector2 global_position

  • void set_global_position ( Vector2 value )

  • Vector2 get_global_position ( )

Global position.


float global_rotation

  • void set_global_rotation ( float value )

  • float get_global_rotation ( )

Global rotation in radians.


float global_rotation_degrees

  • void set_global_rotation_degrees ( float value )

  • float get_global_rotation_degrees ( )

Helper property to access global_rotation in degrees instead of radians.


Vector2 global_scale

  • void set_global_scale ( Vector2 value )

  • Vector2 get_global_scale ( )

Global scale.


float global_skew

  • void set_global_skew ( float value )

  • float get_global_skew ( )

Global skew in radians.


Transform2D global_transform

Global Transform2D.


Vector2 position = Vector2(0, 0)

Position, relative to the node’s parent.


float rotation = 0.0

  • void set_rotation ( float value )

  • float get_rotation ( )

Rotation in radians, relative to the node’s parent.

Note: This property is edited in the inspector in degrees. If you want to use degrees in a script, use rotation_degrees.


float rotation_degrees

  • void set_rotation_degrees ( float value )

  • float get_rotation_degrees ( )

Helper property to access rotation in degrees instead of radians.


Vector2 scale = Vector2(1, 1)

The node’s scale. Unscaled value: (1, 1).

Note: Negative X scales in 2D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, negative scales on the X axis will be changed to negative scales on the Y axis and a rotation of 180 degrees when decomposed.


float skew = 0.0

  • void set_skew ( float value )

  • float get_skew ( )

Slants the node.

Note: Skew is X axis only.


Transform2D transform

Local Transform2D.


Method Descriptions

void apply_scale ( Vector2 ratio )

Multiplies the current scale by the ratio vector.


float get_angle_to ( Vector2 point ) const

Returns the angle between the node and the point in radians.

Illustration of the returned angle.


Transform2D get_relative_transform_to_parent ( Node parent ) const

Returns the Transform2D relative to this node’s parent.


void global_translate ( Vector2 offset )

Adds the offset vector to the node’s global position.


void look_at ( Vector2 point )

Rotates the node so it points towards the point, which is expected to use global coordinates.


void move_local_x ( float delta, bool scaled=false )

Applies a local translation on the node’s X axis based on the Node._process‘s delta. If scaled is false, normalizes the movement.


void move_local_y ( float delta, bool scaled=false )

Applies a local translation on the node’s Y axis based on the Node._process‘s delta. If scaled is false, normalizes the movement.


void rotate ( float radians )

Applies a rotation to the node, in radians, starting from its current rotation.


Vector2 to_global ( Vector2 local_point ) const

Transforms the provided local position into a position in global coordinate space. The input is expected to be local relative to the Node2D it is called on. e.g. Applying this method to the positions of child nodes will correctly transform their positions into the global coordinate space, but applying it to a node’s own position will give an incorrect result, as it will incorporate the node’s own transformation into its global position.


Vector2 to_local ( Vector2 global_point ) const

Transforms the provided global position into a position in local coordinate space. The output will be local relative to the Node2D it is called on. e.g. It is appropriate for determining the positions of child nodes, but it is not appropriate for determining its own position relative to its parent.


void translate ( Vector2 offset )

Translates the node by the given offset in local coordinates.