鼠标跟随器缓入/缓出

发布于 2024-12-21 12:54:35 字数 299 浏览 2 评论 0原文

那里有很多 mousefollower 教程。它们中的大多数都具有用于缓和运动的简单公式:

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

(tx = 目标位置,x = 实际位置,interp > 1)

这使得从动件在开始时速度非常快,然后缓慢减速到目标位置。

我必须如何更改公式,以便我可以定义自定义加速度、自定义减速度以及两者之间运动的最大速度?一开始我会很高兴能有额外的加速。

谢谢!

汉斯

There are a lot of mousefollower tutorials out there. Most of them feature a simple formula for easing the motion:

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

(tx = target position, x = actual position, interp > 1)

This makes the follower go very fast in the beginning, then decelerate slowly to the target position.

How do i have to change the formular, so that i can define a custom acceleration, custom deceleration and a maxspeed for the movement in between? For the very beginning i'd be happy with an added acceleration at all.

Thanks!

Hans

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空袭的梦i 2024-12-28 12:54:35

加速度是速度随时间的变化。因此,在一维中,要应用恒定速度,您需要执行以下操作:

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...

Acceleration is the change in velocity over time. So in 1D, to apply a constant velocity, you'd do:

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

where:

  • a is the acceleration (a constant)
  • v is the velocity
  • x is the x-position
  • dt is the timestep, i.e. the time between updates

You'd do something similar for deceleration, except that a would now be negative.

To set a maximum velocity, you simply need to a conditional check on v, maybe:

v = MIN(v_max, v);

where v_max is your maximum allowed velocity (a constant).

In 2D, you'd need to take into account the direction of travel:

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

I'll leave it to you to calculate theta...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文