Trouble with Blend Space 2D. Animations start from scratch while blending despite setting the blend mode to Discrete Carry

Godot Version

4.2.1 Mono

Question

How do I blend between animations in a Blend Space 2D while maintaining the playback point of animations? I don’t want animations to restart each time I blend between them.

I have a set of top-down running animations for a 2D sprite, each with a single track that changes the sprite frame discretely (no interpolation). There are four animations, one for each cardinal direction, and they’re identical in terms of duration and number/time of keyframes.

This is about the simplest use case for a Blend Space 2D, where I want to select which animation to play based on a movement vector. While blending, I want the new animation to start at the same playback point as the last animation. For example, if my character is moving right, but then I start moving up, the “run up” animation should play starting at whichever frame the “run right” animation was on.

This is supposed to be the purpose of setting the blend mode of the Blend Space 2D to BLEND_MODE_DISCRETE_CARRY:

Similar to BLEND_MODE_DISCRETE, but starts the new animation at the last animation’s playback position.

However, when I do this, it doesn’t work as expected. Every time I change the character’s direction, the run animation resets. I very obvious if you rapidly change directions, where it appears the character is frozen as it never makes it to the first step.

How do I fix this?

Turns out this is due to a known bug present as of Godot 4.2. A fix has been made and is part of the 4.3 release milestone. I look forward to it.

1 Like