2012-04-11 20 views
1

可能な二重に:
How do I apply gravity to my bouncing ball application?は跳ねるボールと重力は、Java

私は地面に跳ね返るボールのクラスを持っています。ここで

は私のコードの一部です:

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

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

このコードの問題は、私は空中でボールを持ったときに、それは、それは始めより高くバウンドし、高く高くバウンスし続けるということですが、私はそれが始まったのと同じ高さに跳ね返りたい。

答えて

2

(それは自由落下されている場合のみ)下を打つの速度を増やさないでください:

void update() { 
     yPos += ySpeed; 

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

おかげで、それは問題ではありませんでした。 私は数値積分のオイラーズ法を使用していましたが、これは不正確です。実際、[Wikipedia article](http://en.wikipedia.org/wiki/Euler_method)のグラフが私の問題を示しています。 私は現在、私が試みているVerlet統合のような別の方法を使用しなければならないことが判明しました。 – user1327446

+0

あなたのコードにバグがありましたが、私は指摘しました。あなたの質問は、現実的なボールのバウンスについてのものではありませんでした。 –

関連する問題