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 楼答案
位置不应该以速度移动单位甚至不一样!如果你想从速度中得到一个位置,你需要用时间单位乘以它(比如你的
deltaTime
)我想你的
deltaTime
将会非常小,因此这也会使移动变得平滑,因为精灵的移动速度会更慢。不过,您可能需要比当前使用的速度更高(或更小的位置范围)。如果将你的速度乘以deltaType
并不能得到你想要的结果,我会尝试添加一个比例因子,并对其进行调整,看看它有什么不同