这是一个关于使用增量时间在屏幕上移动精灵的新手问题。
另外,我正在寻找关于在这种情况下是否需要增量时间的建议......
以下是我计算增量时间的方法:
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。
答案 0 :(得分:2)
位置不应该以速度移动 - 单位甚至不一样!如果你想从一个速度中获得一个位置,你需要将它乘以一些时间单位(例如你的deltaTime
)。
我想你的deltaTime
会非常小,所以这应该可以平滑运动,因为精灵会移动得更慢。您可能需要比当前使用的速度更高的速度(或更小的位置范围)。如果将您的速度乘以deltaType
无法得到您想要的结果,我会尝试添加缩放系数并调整它以查看其产生的差异。