我正在尝试这样做,因此,如果您可以说,例如,向右移动并放开箭头键,您将放慢速度,然后停止,而不仅仅是立即停止。这是我的做法:

//If you clicked right arrow key and you're not going
//Faster then the max speed
    if(moveRight && !(vel.x >= 3)){
        vel.x += movementSpeed;
//If you let go of arrow key, slow down at 3/2 the speed you were moving
    }else if(vel.x >= 0 && !moveRight){
        vel.x -= movementSpeed * 1.5f;
    }


但是,由于某些原因,这有时会起作用。在其他时候,您会注意到速度约为0.00523329或类似的很小值。我不明白为什么,因为else if语句说慢下来,直到您基本上等于0。我需要使速度达到0。在这方面的任何帮助都非常感谢!

最佳答案

else if语句表示要跟踪movementSpeed * 1.5f,仅此而已。

以下代码始终显示0.0:

boolean moveRight = false;
    Velocity vel = new Velocity();
    vel.x = 4;
    float movementSpeed = 3;

    while (vel.x !=  0) {
        if(moveRight && !(vel.x >= 3)) {
            vel.x += movementSpeed;
        }
        else if(vel.x >= 0 && !moveRight) {
            vel.x -= movementSpeed * 1.5f;
        }

        if (vel.x <= 0) {
            vel.x = 0;
        }

    }

    System.out.println(vel.x);


也许您忘记了循环。请粘贴更多代码。

09-06 10:15