a bit late, but i was once facing a similar problem and fixed it with a bit of backwards coding, i guess
basically, instead of relying on collision to stop the char when touching the wall, i prevented buttons to be pressed.
so the player could not walk forward into the wall, and only go the other direction.
when the player stopped touching the wall, all movements unlock again.
it's be a bit more difficult in 3D tho. but i hope it could be of any help
great work btw.! love it!