Если вы хотите двигаться по прямой линии между точками, то вы можете рассчитать дельту X и дельту Y как:
DX = X2-X1;
DY = Y2-Y1;
Тогда, если вы хотите переместить определенное расстояние (скорость / кадр), нормализуйте длину, используя теорему Пифагора:
HYP = DX*DX + DY*DY;
HYP = sqrt(HYP);
DX = MoveD * DX/HYP;
DY = MoveD * DY/HYP;
Тогда:
// Move Distance (MoveD) From X1,Y1 to X2,X2 each screen update.
if ((abs(X2-X)<DX)&&(abs(Y2-Y)<DY))
{
X = X + DX;
Y = Y + DY;
} else
// STOP
«Swooping» может быть выполнен путем динамического изменения конечной точки. Начните с конечной точки перед «Целью» и двигайтесь через цель и вверх, чтобы создать «крутое» движение. Добавьте «Смещение скорости», чтобы оно ускоряло движение вниз и замедляло движение вверх.
Это также может быть добавлено к целочисленной математике с использованием варианта алгоритма рисования линий Брезенхэма или DDA.