这是一个关于使用增量时间在屏幕上移动精灵的新手问题。
另外,我正在寻求关于在这种情况下是否需要增量时间的建议。
下面是我计算增量时间的方法:
currentTime = System.currentTimeMillis();
if (lastTime == 0) {
lastTime = currentTime;
deltaTime = 0;
} else {
deltaTime = currentTime - lastTime;
lastTime = currentTime;
}
我想用它来让物体在二维空间中做一个更流畅的运动。
这是我当前向上移动对象的方法:
public void move() {
this.mPos.y -= mSpeed;
}
线程不断地调用move()方法,它工作得很好,但是对象在屏幕上有轻微的抖动。关于如何将增量时间合并到这个move()方法中,有什么建议吗?我正在尝试将最大速度设置为10。
发布于 2016-11-25 06:00:13
位置不应该随速度移动--单位甚至不一样!如果你想从一个速度中得到一个位置,你需要将它乘以一些具有时间单位的东西(比如你的deltaTime
)。
我想象你的deltaTime
将会非常小,所以这应该也会平滑移动,因为精灵会移动得更慢。不过,您可能需要比当前使用的速度更高的速度(或更小的位置范围)。如果你的速度乘以deltaType
不能得到你想要的结果,我会尝试添加一个比例因子,并调整它,看看它有什么不同。
https://stackoverflow.com/questions/40798561
复制