Pour se déplacer en douceur objet entre départ et coordonnées (x1, y1)
destination de coordonnées (x2,y2)
, vous devez d'abord vous demander, comment à long l'objet doit prendre pour se rendre à sa destination. Disons que vous voulez que l'objet arrive en t
unités de temps (qui peut-être secondes, heures, peu importe). Une fois que vous avez déterminé cela, il est alors trivial à l'entraînement le déplacement par unité de temps:
dx = (x2-x1)/t
dy = (y2-y1)/t
Maintenant, il vous suffit d'ajouter (dx,dy)
à la position de l'objet ((x,y)
, d'abord (x1,y1)
) chaque unité de temps, et arrêter lorsque l'objet se trouve à une certaine distance de seuil de la destination. Ceci pour tenir compte des erreurs de fait dans les divisions accumuleront, donc si vous avez fait une vérification de l'égalité comme:
(x,y)==(x2,y2)
Il est peu probable qu'il ne sera jamais vrai.
Notez que la méthode ci-dessus vous donne une vitesse constante, un mouvement en ligne droite. Vous pouvez utiliser une sorte de formule légèrement plus complexe pour donner à l'objet l'apparence d'accélérer, de maintenir la vitesse de croisière, puis de décélérer. Les formules suivantes peuvent alors être utiles:
v(t) = u(t) + t*a(t)
x(t) = v(t) + t*v(t)
C'est simplement Euler's method, et devrait suffire à des fins d'animation.
Est-ce un doublon de http://stackoverflow.com/questions/126761/how-can-i-move-an-object-drawn-in-device-context-python? Pourriez-vous fermer l'un ou l'autre? –
Vous devez indiquer quelle bibliothèque graphique vous utilisez. – wnoise