textures affecting sprite size?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By drulludanni

When setting a texture to a sprite the size of the sprite changes according to the texture, why is this and can I disable this behaviour?

To further clarify the issue I’m having with an example: assume I have a sprite of size 20x30 (transform.scale) with a 1x1 texture. Then I want to use a different texture for the sprite so I decide to use a texture of dimensions 10x15 then all of the sudden the dimensions of the sprite are now (10*20x15*30) but I want the sprite to remain fixed at 20x30 regardless of the size of the given texture.

:bust_in_silhouette: Reply From: Zylann

This is how Godot works. Units of the 2D engine are in pixels, and there are no further size conversions. So when you set a texture on a sprite, the sprite takes the same size as the texture.

If you want to undo that behavior, you can have a script modify the scale using a reference size:

scale = Vector2(20, 30) / texture.get_size()

Or you could even make a custom node in which you use _draw() to render textures at a fixed size no mattter what they are.

If you are making a GUI, you could also use the TextureRect node instead (it’s a Control node so you can give it a size even without a texture), then make the expand property checked and stretch mode set to Scale.