du solltest garkeine festen werte nehmen sondern timebased movement. Also was addiert wird ist von der vergangenen Zeit und einer festgelegten Geschwindigkeit abhängig. Nur die Richtung ist fest. In dem verlinkten Artikel ist das gut beschrieben.
Beispiel:
Delphi-Quellcode:
PosX: double;
PosY: double;
speedX: double;
speedY: double;
newPosX:=speedX * vergangene_Zeit + alte_PosX;
newPosY:=speedY * vergangene_Zeit + alte_PosY;
der Speed Vektor gibt die richtung vor und der Betrag(also länge des Vektor) die Geschwindigkeit .