为什么要使用基于时间的动画以及如何实现它【翻译】

Published:

原文地址: http://blog.sklambert.com/using-time-based-animation-implement

当我写这篇文章的时候,我并不知道使用基于时间的动画的重要性。直到后来,有人告诉我我所使用的基于帧的动画会导致一些问题

我决定要学会这个基于时间的动画以及它为何如此重要。我在其他的游戏中见过几次,但是我还没有理解。 不用说了,我希望尽快的补救我的知识,赶紧学习为什么基于时间的动画是制作游戏的唯一方式。希望这篇文章将帮助你了解为什么基于帧的动画会出现一些问题以及基于时间的动画如何解决上述问题。

基于帧的动画

基于帧的动画就是使用帧速率来更新动画。举个例子,如果浏览器是 60FPS(即 60帧/秒),那么每秒钟,游戏会更新 60 次。这意味着,如果每次更新,方块都移动 2px,那么 1 秒后,方块移动了 120px。

大多数的情况下,基于帧的动画运行得相当好。唯一的问题是,你必须要保证 FPS 永远不会改变(但这是完全不现实的)。如果帧率发生变化,更新的距离也会发生变化。

回到那个方块的例子,如果我们只有 10FPS 而不是 60FPS 呢?那么方块每秒只会移动 20px 而不是 120px。这就是基于帧的动画存在的问题,完全依赖于帧速率。

看到这里,我们来看看下面的例子。每个盒子都是基于帧的动画,它们的代码完全一样,唯一的区别就是它们的帧速率不一样。