2012-04-11 8 views
1

Mögliche Duplizieren:
How do I apply gravity to my bouncing ball application?Flummi Mit Gravity In Java

Ich habe einen Ball-Klasse, die den Boden prallt.

Hier ist ein Teil meines Code:

public void update(){ 
    yPos += ySpeed; 
    ySpeed += gravity; 

    if(yPos > BOTTOM_OF_SCREEN){ 
    ySpeed *= -1; 
    } 
} 

Das Problem mit diesem Code ist, dass, wenn ich einen Ball in der Luft habe, springt er höher als es begann, und hält immer höher und höher springen, aber Ich möchte, dass es auf die gleiche Höhe springt, mit der es angefangen hat.

Antwort

2

Sie erhöhen die Geschwindigkeit nicht den Boden beim Auftreffen auf (nur, wenn es frei fällt):

void update() { 
     yPos += ySpeed; 

     if (yPos > BOTTOM_OF_SCREEN) { 
      ySpeed *= -1; 
     } else ySpeed += gravity; 
    } 
+0

Danke, aber das war nicht das Problem. Es stellt sich heraus, dass ich Eulers-Methode der numerischen Integration verwendet, die Ungenauigkeiten hat. Tatsächlich illustriert das Diagramm auf [Wikipedia-Artikel] (http://en.wikipedia.org/wiki/Euler_method) mein Problem. So stellt sich heraus, dass ich eine andere Methode verwenden muss (wie die Verlet-Integration, die ich gerade versuche). – user1327446

+0

Es gab einen Fehler in Ihrem Code, auf den ich hingewiesen habe. In deiner Frage ging es nicht um realistisches Ball-Bouncing. –

Verwandte Themen