2016-05-24 5 views
0

私はそれをそうしようとしています、右に動かして、矢印キーを放すと、遅くなります。キーがJavaでリリースされたときに0になることはありません

//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に達する必要があります。この点に関する助けは非常に高く評価されています!

+1

どのようなmovementSpeedですか? – greenPadawan

+0

エラーは何ですか?あなたのvel.xは決して0にならないのですか? – Gildraths

+0

@greenPadawanいくつかの値、5 * Gdx.graphics.getDeltaTime(); – Luke

答えて

1

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); 

たぶん、あなたはループを忘れてしまいました。もっとコードを貼り付けてください。

+0

パーフェクト、正確にどのように動作するのでしょうか。 – Luke

関連する問題