当游戏加速时我如何改变距离?

时间:2016-05-10 16:06:12

标签: java libgdx

我正在尝试用JAVA使用LibGDX制作像Canabalt这样的游戏,在游戏中,当玩家停留在同一位置时,背景从右向左加速。距离每秒增加1并且速度加快这样的0.15f:

public void update(float delta){
    timeState += delta;
    speed += 0.15f;

    if(timeState >= 1){
        timeState = 0f;
        distance += 1;
    }

    if (speed > MAX_SPEED) speed = MAX_SPEED;

}

但是我不希望距离保持不变,我希望它相对于速度有所改变。因此,随着速度的增加,距离也开始增加得更快。当达到最大速度时,距离增量也应该是恒定的。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

使用数学函数对数应该可以做到这一点,因为你的速度将达到极限,距离也会使用相同的路径,效果会更加平滑。

答案 1 :(得分:0)

我认为让distance代表所覆盖的真实距离可能更为直接,例如:

public void update(float delta){
    distance += speed * delta;  //  distance = speed * time
    speed += 0.15f;

    if (speed > MAX_SPEED) speed = MAX_SPEED;
}

这样,你的变量实际上反映了游戏中发生的事情,而不是必须使用虚假的时间状态解决方法。

这里唯一的区别是distance现在需要一个浮点数 - 将它转换为int(如(int)distance)将截断它并保留它你想要的整数值上面的代码。