Up to date

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

Sprite2D

Inherits: Node2D < CanvasItem < Node < Object

General-purpose sprite node.

Description

A node that displays a 2D texture. The texture displayed can be a region from a larger atlas texture, or a frame from a sprite sheet animation.

Tutorials

Properties

bool

centered

true

bool

flip_h

false

bool

flip_v

false

int

frame

0

Vector2i

frame_coords

Vector2i(0, 0)

int

hframes

1

Vector2

offset

Vector2(0, 0)

bool

region_enabled

false

bool

region_filter_clip_enabled

false

Rect2

region_rect

Rect2(0, 0, 0, 0)

Texture2D

texture

int

vframes

1

Methods

Rect2

get_rect ( ) const

bool

is_pixel_opaque ( Vector2 pos ) const


Signals

frame_changed ( )

Emitted when the frame changes.


texture_changed ( )

Emitted when the texture changes.


Property Descriptions

bool centered = true

  • void set_centered ( bool value )

  • bool is_centered ( )

If true, texture is centered.


bool flip_h = false

  • void set_flip_h ( bool value )

  • bool is_flipped_h ( )

If true, texture is flipped horizontally.


bool flip_v = false

  • void set_flip_v ( bool value )

  • bool is_flipped_v ( )

If true, texture is flipped vertically.


int frame = 0

  • void set_frame ( int value )

  • int get_frame ( )

Current frame to display from sprite sheet. hframes or vframes must be greater than 1. This property is automatically adjusted when hframes or vframes are changed to keep pointing to the same visual frame (same column and row). If that's impossible, this value is reset to 0.


Vector2i frame_coords = Vector2i(0, 0)

Coordinates of the frame to display from sprite sheet. This is as an alias for the frame property. hframes or vframes must be greater than 1.


int hframes = 1

  • void set_hframes ( int value )

  • int get_hframes ( )

The number of columns in the sprite sheet. When this property is changed, frame is adjusted so that the same visual frame is maintained (same row and column). If that's impossible, frame is reset to 0.


Vector2 offset = Vector2(0, 0)

The texture's drawing offset.


bool region_enabled = false

  • void set_region_enabled ( bool value )

  • bool is_region_enabled ( )

If true, texture is cut from a larger atlas texture. See region_rect.


bool region_filter_clip_enabled = false

  • void set_region_filter_clip_enabled ( bool value )

  • bool is_region_filter_clip_enabled ( )

If true, the outermost pixels get blurred out. region_enabled must be true.


Rect2 region_rect = Rect2(0, 0, 0, 0)

  • void set_region_rect ( Rect2 value )

  • Rect2 get_region_rect ( )

The region of the atlas texture to display. region_enabled must be true.


Texture2D texture

Texture2D object to draw.


int vframes = 1

  • void set_vframes ( int value )

  • int get_vframes ( )

The number of rows in the sprite sheet. When this property is changed, frame is adjusted so that the same visual frame is maintained (same row and column). If that's impossible, frame is reset to 0.


Method Descriptions

Rect2 get_rect ( ) const

Returns a Rect2 representing the Sprite2D's boundary in local coordinates. Can be used to detect if the Sprite2D was clicked.

Example:

func _input(event):
    if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
        if get_rect().has_point(to_local(event.position)):
            print("A click!")

bool is_pixel_opaque ( Vector2 pos ) const

Returns true, if the pixel at the given position is opaque and false in other case.

Note: It also returns false, if the sprite's texture is null or if the given position is invalid.