有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用delta time使移动平滑的简单方法

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

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

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

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()方法,它工作得很好,但是对象在屏幕上有点抖动。有关如何将增量时间合并到此move()方法中的任何提示?我想把最高速度设为10


共 (1) 个答案

  1. # 1 楼答案

    位置不应该以速度移动单位甚至不一样!如果你想从速度中得到一个位置,你需要用时间单位乘以它(比如你的deltaTime

    我想你的deltaTime将会非常小,因此这也会使移动变得平滑,因为精灵的移动速度会更慢。不过,您可能需要比当前使用的速度更高(或更小的位置范围)。如果将你的速度乘以deltaType并不能得到你想要的结果,我会尝试添加一个比例因子,并对其进行调整,看看它有什么不同