When making 2D games, Godot provides two ways of animating characters: AnimatedSprite and Sprite-AnimationPlayer.

AnimatedSprite offers a simplistic way to do it, but ironically, it's also its downside.

AnimationPlayer is a powerful tool, but at the same time too much for simple animation.

It is also possible to use both methods at the same time since I'm also currently using them this way.

Which one do you choose and why? And what's the right time to use it?

    I use animation player. I like how you can animate the hit boxes and such so they go along with the attacks.

    for whens the right time to use which , i'm still pretty new, so im not sure the 'correct' answer. just know what i do.

    I dont like Spritesheets and would like a mix between animation player and animated sprite, but usually i must use animation player becuz yes.

    On a whole I use the AnimationPlayer when doing animations, simply because if I need to expand or add things later, I generally don’t have to redo a bunch of work and can just add the additional track(s) to the animation. That said, it is slower to get initially setup than an AnimatedSprite, so I can see the appeal of using an AnimatedSprite and only changing to an AnimationPlayer or hybrid solution if needed. Especially since the AnimatedSprite API is pretty similar to the AnimationPlayer (at least for playing animations), most of the time to switch is probably just in the Godot editor itself. Ultimately I’d go with whatever works for you and your workflow. :smile:

    Yeah, it's one of those things.

    This is my best guess. AnimatedSprite is for objects while AnimationPlayer is for Player and Enemies.

    Player and enemies have complex animation, hence AnimationPlayer is used. Objects, being "simple" to animate, use AnimatedSprite. Assuming the sprite sheet has the animation, of course.

    6 days later

    AnimationPlayer is I think my favourite thing in Godot, I'll use it anywhere I can

    a year later

    These are all Great comments

    Animated Sprites have one function; they allow you to animate a single sprite object.
    They are great if all you want a static object with 1 or more animation states that do not really trigger any actions like fountains or mail boxes. Another case is if you want to manage all of the logic and control of everything in a scene with your own code these guys will be great they have deterministic states and timing.

    Animation Players are advanced tooling that allow you to trigger actions and can be used to animate multiple sprites in a scene. You can drag and drop different sprites and shaders into the animation player timeline and create actions that will happen at specific times/frames during an animation. Things like attacking and special effects applying shaders or animating multiple sprites to work together to create rich animations. If you are using an event based pattern you can even hook up signals to fire at points in the animation and all kinds of other cool stuff.

    KanataEXE hmmmm..... depends on the situation. I do find myself using both.

    I prefer sprites for animated movement because as long as your code is right, it will play right. I even use some animated sprites in UI just because of how easy they are to drop in.

    When I need to do movement that do NOT involve the sprite changing, I use AnimationPlayer (positions for cutscene objects, shaking environment pieces, etc.).

    I feel, for structured, sequenced animations, the AnimationPlayer is better. But if you have a graphic to change fully, use AnimatedSprite. It's also very easy to change the elements of a Sprite vs an Animation.