How is this effect achieved? I know that celeste was made with Unity but surely there would be some way to parody the ability to scale blocks as big as you’d like them to be.
Specifically what I’m talking about couldn’t be achieved by a tilemap because I would want the sprite to react to the player interacting with it.
There are lots of ways to do this. You can use is_on_wall(), you can use a RayCast2D, a ShapeCast2D, or an Area2D on the player to detect the wall and act appropriately for the climbing bit.
To make the animated sprite change inside, add an ShapeCast2D on the sprite that is larger than the block that can detect the character and use the collision points to detect the player in relation to the whole thing.
Also, you can do this in a TileMapLayer. You can make a special scene that goes in the TileMapLayer. The wall climbing you can do just by defining physics on the tiles.
I’d start with the climb functionality first. You can look up videos on wall running, wall sliding, and/or wall jumping in Godot if you can’t find any on wall climbing.
I realize now how deceptive the first image can be. My problem isn’t in the functionality of letting the player climb/interact with objects (I ended up using different collision layers so that I didn’t need to bother with finding custom data from tilemaps). I want to figure out how to make a scalable sprite that can look nice and not stretched in any assortment of sizes (32 by 64), (16 by 128) ect. without needing to make too many sprites for each configuration of size.
Well since my last post I actually played that level in Celeste for the first time. So for the stars, that’s actually a Parallax2D node behind the tile, where the tile center is transparent. Then when the character lands on top that looks like a shader effect. And when the character dashes through, that looks like a different animation player for the character dash and a shader effect to show the player’s passage.