Ein Gitter machen, sodass jedes Feld nur 50*50px groß ist und dann den Spieler eben nur um einen Fixwert bewegen.
In Kombination mit der Kollisionserkennung frag ich mich zwar, was du dir dabei gedacht hast aber... naja, nicht mein Minesweeperspiel.
Sollte er sich jedoch frei bewegen können, also theoretisch "jeden" Pixel begehen können, so könntest du folgendes tun:
Wenn versucht wird den Gang zu betreten, schaust du, ob die Differenz aus der Y-Position des Spielers und der Y-Position eines wesentlichen Punktes im Gang kleiner als eine gewisse Toleranz ist.
Sollte diese Toleranz unterschritten sein, kannst du Y einfach auf die richtige Position setzen oder eben dich mithilfe einer Geschwindigkeit annähern, damit das smoother rüberkommt.
Nochmal zu besagtem Punkt: Der sollte ein selbes Verhältnis zur Fläche haben, als der "Schwerpunkt" (aka lokaler Ort des Ortsvektors, der die globale Position deines Sprites beschreibt) sonst müsstest du nochmal ein wenig addieren und subtrahieren.
MfG
Check