使用增量时间使运动平稳的简单方法

时间:2016-11-25 05:54:43

标签: java

这是一个关于使用增量时间在屏幕上移动精灵的新手问题。

另外,我正在寻找关于在这种情况下是否需要增量时间的建议......

以下是我计算增量时间的方法:

currentTime = System.currentTimeMillis();

            if (lastTime == 0) {
                lastTime = currentTime;
                deltaTime = 0;
            } else {
                deltaTime = currentTime - lastTime;
                lastTime = currentTime;
            }

我想用它来以某种方式为2d空间中的物体进行更流畅的移动。

这是我目前移动对象的方法:

public void move() {
    this.mPos.y -= mSpeed;
}

线程不断调用move()方法并且效果很好但是对象在屏幕上略微抖动。有关如何将delta时间纳入此move()方法的任何提示?我正在尝试将最高速度设置为10。

1 个答案:

答案 0 :(得分:2)

位置不应该以速度移动 - 单位甚至不一样!如果你想从一个速度中获得一个位置,你需要将它乘以一些时间单位(例如你的deltaTime)。

我想你的deltaTime会非常小,所以这应该可以平滑运动,因为精灵会移动得更慢。您可能需要比当前使用的速度更高的速度(或更小的位置范围)。如果将您的速度乘以deltaType无法得到您想要的结果,我会尝试添加缩放系数并调整它以查看其产生的差异。

相关问题