I'm wondering why you let the player move by pixels instead of grids.I think grid-based movement would be more accurate and simpler.