これはおそらく本当に基本的な問題ですが、それに関する他の記事が見つからないようです。
とにかく、私はJavaで小さな跳ねるボールプログラムを書いて、私の基本的なスキルを広げようとしました. このプログラムは、落下してしばらくの間跳ね返る単純な弾むボールです。元のプログラムは問題なく動作しましたが、プログラムに重力を追加しようとしました。重力は実際にはしばらくの間うまく機能しますが、バウンスが非常に小さくなると、アニメーションが非常に短時間不安定になり、ボールの位置が絶えず減少します. 私は問題を理解しようとしましたが、私はそれを見ることができません。どんな助けでも大歓迎です。
public final class Ball extends Rectangle {
float xspeed = 1.0f; float yspeed = 1.0f; float gravity = 0.4f;
public Ball(float x, float y, float width, float height) {
super(x, y, width, height);
}
public void update(){
yspeed += gravity;
move(xspeed, yspeed);
if(getX() < 0){
xspeed = 1;
}
if(getX() + getWidth() > 320){
xspeed = -1;
}
if(getY() < 0){
yspeed = 1;
}
if(getY() + getHeight() > 200 && yspeed > 0){
yspeed *= -0.98f;
}
if(getY() + getHeight() > 200 && yspeed < 0){
yspeed *= 0.98f;
}
}
public void move(float x, float y){
this.setX(getX()+x);
this.setY(getY()+y);
}
}
編集: 不規則な動きを整理したようです。ボールがバウンドしなくなったときに、ボールが下に移動するのをどのように止めることができるか、まだ苦労しています。現時点では、バウンスを停止し、「床」を通過して下に移動し続けます。yspeed += 重力線に関係していると思います。動きを止める方法がわかりません。