我目前正在编写流滑块插件的第二个版本,其中一个动画选项是,当滑块以某种恒定的加速度加速,达到最大速度,然后以恒定的减速速度减速。我很难找到启动减速的正确时机。
如果时间是连续的,就没有问题,但是时间以离散的间隔移动,因此在运动加速时有一些框架,并且(使用连续时间数学)您不需要开始减速,但是在下一个帧中,减速已经太晚了。
例如,假设我们的帧速率为每秒20帧。我们需要移动500 3px,启动速度为0 3px/帧,最大速度为50 3px/帧,加速度为3 3px/帧,减速为3 3px/帧。下面你可以看到系统的前13帧。
| frame | speed | traveled | to go | deceleration distance |
|-----------------------------------------------------------
| 1 | 3 | 3 | 497 | 3 |
| 2 | 6 | 9 | 491 | 9 |
| 3 | 9 | 18 | 482 | 18 |
| 4 | 12 | 30 | 470 | 30 |
| 5 | 15 | 45 | 455 | 45 |
| 6 | 18 | 63 | 437 | 63 |
| 7 | 21 | 84 | 416 | 84 |
| 8 | 24 | 108 | 392 | 108 |
| 9 | 27 | 135 | 365 | 135 |
| 10 | 30 | 165 | 335 | 165 |
| 11 | 33 | 198 | 302 | 198 |
| 12 | 36 | 234 | 266 | 234 |
| 13 | 39 | 273 | 227 | 273 |
|-----------------------------------------------------------
现在,你可以看到,在0.6s (第12帧)时减速还为时过早,因为减速距离234小于266的距离。但在下一帧(第13帧)中,减速距离比要走的距离要大得多,如果我们从那里开始减速,我们就不能按时完成。
解决这一问题的最佳策略是什么?
发布于 2012-01-08 00:59:14
你可以尝试调整减速速度在框架‘太晚’,所以它将适合在较小的距离。
https://stackoverflow.com/questions/8773809
复制相似问题