Are you using a TileMap? Tiles each have individual collision shapes which creates problems with collisions, from what I understand. When your character collides with the floor where two tiles are touching, you will often get two collisions. One of these will be with the corner of one of the tiles! The normal of that collision will be very different from the floor normal (often 0,-1).
Another way to test and see this is to have a RigidBody2D with bounce = 1 and a CircleShape2D as collision shape, and just look at it bounce on your TileMap floor: it will often do a bad bounce for no apparent reason. With Debug -> Visible Collision Shapes you will see two red dots (collisions) because it collides with two tiles: the top of one and the corner of the other. I have no idea how to fix this ATM. I hope I'm getting something wrong...