Squash and Stretch a Character Sprite

Hi All,

Pretty new here, been playing with Monogame for a while now and just wondering if anyone knows how to squash and stretch a sprite in a way similar to how it is used on the character sprite for Madeleine in Celeste when jumping.

I’m a bit stuck with this, I can usually come up with at least a ‘jumping off point’ for these sort of things but aren’t having much luck.

Would be really good to hear any ideas, thanks in advance!!

Scale parameter of the draw call?

Should look something like: https://github.com/Apostolique/Dragon46/blob/master/Game/Character.cs#L159

It’s the _scaleTween.Value in the draw call.

Edit: For Celeste, it’s likely that they just made a jump animation directly in the character sprite sheet.

1 Like

Celeste has a sprite animation, I saw some videos frame by frame and it is animated like that.

1 Like

Thanks very much for taking the time to answer everyone!!

I’m going to give it a go via the spritesheet method and have a good read of the code linked above by @Apostolique :+1:

I do feel though the squash and stretch applied to the jump method looks to be done programatically, but as long as I can get it working and it looks good I’ll be happy.

I think the jump animation way is easier to implement, if you’re half-way decent at sprite art (which I am not, lol). It also gives you a lot more control over the visuals since you can make that animation look exactly how you want. The downside is that it’s harder to maintain… if you want to change the look of your sprite, that’s just another animation you’ll have to update.

If you’re not half-way decent at sprite-art, the stretch squash method is mostly easier (once you get the value animation sorted), but it does usually have a very obvious look to it.

Good luck!

1 Like

I really like tween animations personally. You can really play with how an animation feels with math. Take a flat 2D drawing and give it life.

1 Like