Almost completely working, wall collision detection is a little shaky