Чтобы плавно переместить объект между начальной координатой (x1, y1)
и координатой назначения (x2,y2)
, вам нужно сначала спросить себя, как long должен пройти объект, чтобы добраться до пункта назначения. Допустим, вы хотите, чтобы объект находился там в t
единицах времени (которые могут быть секундами, часами и т. Д.). Как только вы определили это, тогда тривиально отрабатывать смещение за единицу времени:
dx = (x2-x1)/t
dy = (y2-y1)/t
Теперь вам просто нужно добавить (dx,dy)
к позиции объекта ((x,y)
, первоначально (x1,y1)
) каждый единичный момент времени и остановиться, когда объект окажется в пределах некоторого порогового расстояния от пункта назначения. Это связано с тем, что ошибки в делениях будут накапливаться, поэтому, если вы сделали проверку на равенство, например:
(x,y)==(x2,y2)
Вряд ли это когда-либо будет правдой.
Обратите внимание, что вышеуказанный метод дает вам постоянную скорость, прямолинейное движение. Вы можете вместо этого использовать какую-то более сложную формулу, чтобы придать объекту ускорение, поддержание крейсерской скорости, а затем замедление. Тогда могут быть полезны следующие формулы:
v(t) = u(t) + t*a(t)
x(t) = v(t) + t*v(t)
Это всего лишь метод Эйлера , и его должно быть достаточно для анимации.