Jacob Garby
Jacob Garby

Reputation: 855

How to load textures from a spritesheet in Godot 3

I've just got started with Godot yesterday, and I'm starting a game. I drew a few spritesheets for it. It seems much more efficient to pack all of the frames of an animation into a single image file, right?

Anyway, in Godot I have an AnimatedSprite, who of course has a SpriteFrames property, or whatever it's called. I want to split my spritesheet up into multiple images so that I can use each image as a separate frame in the animation, but as far as I can see Godot provides no such feature. Is this the case?

I've been searching for an answer on the web for a while now, and I can't find anything relevant.

I'd be very surprised if I can't do this in Godot, since I can do it in just about every other game engine I've seen.

Thanks!

(Just to clarify, I want to (programmatically or otherwise,) split a spritesheet into multiple textures, within Godot.)

Upvotes: 10

Views: 11189

Answers (2)

Oliort UA
Oliort UA

Reputation: 1647

Click New SpriteFrames in the Frames property menu of the AnimatedSprite node. Now click on the just created SpriteFrames next to the name of the Frames property. Animation Frames window should appear.

Animation frames window screenshot

Click this Add frames from a Sprite Sheet button. Select your spite sheet file, set grid sizes and finally select individual frames from that sprite sheet.

(This works for me in Godot v3.2.2)

Upvotes: 5

Rafał Michałuszek
Rafał Michałuszek

Reputation: 84

As it says: "Sprite node that can use multiple textures for animation." Source: http://docs.godotengine.org/en/3.0/classes/class_animatedsprite.html

What you are searching for is using normal Sprite(2D), and set regions for it if you are using AnimationPlayer at each frame. Example: https://www.youtube.com/watch?v=IGHcscKpA7Y

If you want to do all programmically, you just have to set the sprite to Sprite(2D), and then:

func _ready(): 
   set_region(true)
   set_region_rect(Rect2(positionx,positiony,width,height)) 

but i guess using AnimationPlayer is better option.

This is not tested because i should be sleeping right now, but it should work.

Upvotes: -1

Related Questions