跟踪速度

时间:2015-04-08 09:32:41

标签: java libgdx

我当前的动议是计算出来的。

        //moveX and Y are normalized
        moveX = moveX * time * speed;
        moveY = moveY * time * speed;

当然,这会导致一种非常僵硬的动作,只是停下来走了。

跟踪加速度以创建加速/减速效果的有效方法是什么?我的游戏没有引力,因为它是自上而下的。

2 个答案:

答案 0 :(得分:0)

具有单独的当前速度和目标速度变量。

使用恒定加速度将当前速度收敛到目标速度(例如,在每次paint(Graphics)调用中)。

更新位置应该是posX += current_speedX;不要通过乘以时间和速度来整合每次通话(因为它不会缩放到非线性运动)。

答案 1 :(得分:0)

您需要将时间限制为短值,并使用恒定的加速度加速功能来改变速度。因此,您可以模拟重力或其他加速度函数。

作为重力的示例,其中g是仅针对y轴的重力加速度。 SpeedX是不变的。间隔为100毫秒(相当于0.1秒)。 SpeedY改变了g加速度的效果。

while (true) {
    moveX = moveX * 100 * speedX;
    moveY = moveY * 100 * speedY;
    speedY = speedY + g * 0.1;
    Thread.sleep(100);
}