I once built a Bomberman clone that had control issues.
The first iteration of the controls were clunky, because I only checked if a player was touching a block in the direction they wanted to move and if there was, I reset the position.
Move down, hit block, stop.
After a bit of experimenting I checked if a player was halfway behind or ahead of a block and added perpendicular motion after resetting the position. That way the player would glide around the blocks.
Move down, hit block, stop, move left or right until moved around the block.
That change alone made the game 100x more fun.