如何在比赛加速时改变距离



我正在尝试使用LibGDX用JAVA制作一款类似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;
}

但我不希望距离是恒定的,我希望它相对于速度变化。因此,随着速度的增加,距离也开始更快地增加。当达到最大速度时,距离增量也应该是恒定的。我该如何存档?

我认为让distance表示覆盖的真实距离可能更简单,比如:

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

这样,你的变量实际上反映了游戏中发生的事情,而不必使用模糊的时间状态变通方法。

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

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

最新更新