Следящий за мышью плавный ввод/вывод

Есть много туториалов по mousefollower. Большинство из них имеют простую формулу для облегчения движения:

x += (tx - x) / interp;
y += (ty - y) / interp;

(tx = целевое положение, x = фактическое положение, интерполяция > 1)

Это заставляет ведомого двигаться очень быстро в начале, а затем медленно замедляться до целевого положения.

Как мне изменить формулу, чтобы я мог определить пользовательское ускорение, пользовательское замедление и максимальную скорость для движения между ними? Для начала я бы вообще был доволен дополнительным ускорением.

Спасибо!

Ганс


person superno    schedule 13.12.2011    source источник


Ответы (1)


Ускорение – это изменение скорости во времени. Итак, в 1D, чтобы применить постоянную скорость, вы должны сделать:

v += a * dt;
x += v * dt;

куда:

  • a - ускорение (постоянная величина)
  • v это скорость
  • x - это x-позиция
  • dt — временной шаг, т. е. время между обновлениями

Вы бы сделали что-то подобное для замедления, за исключением того, что a теперь было бы отрицательным.

Чтобы установить максимальную скорость, вам просто нужно выполнить условную проверку v, например:

v = MIN(v_max, v);

где v_max — ваша максимально допустимая скорость (постоянная).

В 2D вам нужно учитывать направление движения:

x += v * cos(theta);
y += v * sin(theta);

Я оставлю это вам, чтобы вычислить theta...

person Oliver Charlesworth    schedule 13.12.2011