2016-05-24 2 views
0

Ich versuche es so zu machen, wenn Sie, sagen wir, nach rechts bewegen und Sie Ihre Pfeiltaste loslassen, werden Sie langsamer und stoppen nicht sofort aufhören. Hier ist, wie ich das tue:Velocity schlägt niemals 0, wenn Taste in Java losgelassen wird

//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; 
    } 

jedoch aus irgendeinem Grund, diese manchmal funktioniert. Zu anderen Zeiten werden Sie feststellen, dass die Geschwindigkeit bei etwa 0,00523329 oder so klein ist. Ich verstehe nicht warum, weil die else if Anweisung sagt, zu verlangsamen, bis Sie im Wesentlichen gleich 0 sind. Ich brauche die Geschwindigkeit um 0 zu erreichen. Jede Hilfe in dieser Hinsicht wird sehr geschätzt!

+1

was ist movementSpeed? – greenPadawan

+0

Was genau ist der Fehler? Dass dein vel.x nie 0 bekommt? – Gildraths

+0

@greenPadawan ein Wert, 5 * Gdx.graphics.getDeltaTime(); – Luke

Antwort

1

else if Anweisung sagt Subtrack movementSpeed * 1.5f, nichts mehr.

-Code unten immer druckt 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); 

Vielleicht haben Sie vergessen über Schleife. Bitte fügen Sie mehr Code ein.

+0

Perfekt, funktioniert genauso wie es soll. – Luke

Verwandte Themen