1

私は現在、非常に基本的な重力シミュレーション (Daniel Schiffman の著書 Learning Processing にある例に基づく) を特徴とする処理スケッチに取り組んでいますが、重力が奇妙な方法で動作し続け、どうすればよいか途方に暮れています。それ。これが私が思いつく最も簡単な例です:

float x = 50;
float y = 50;

float speed = 2;
float gravity = 0.1;

void setup() {
  size(400, 400);
}

void draw() {
  background(255);

  fill(175);
  stroke(0);
  ellipseMode(CENTER);
  ellipse(x, y, 10, 10);

  y = y + speed;
  speed = speed + gravity;

//Dampening bounce effect when the ball hits bottom
  if (y > height) {
    speed = speed * -0.95;
  }
}

上記は、異なる開始速度と異なるウィンドウ サイズを除けば、Schiffman の本にあるものと実質的に同じです。最初の 2 回のバウンスでは問題なく動作しているように見えますが、3 回目のバウンドでボールがウィンドウの下部に引っかかってしまいます。

これをどこからデバッグしようとしているのかさえわかりません。誰でもポインタを与えることができますか?

4

2 に答える 2

2

yより大きいままの場合height、コードspeedはボールが跳ね返る機会を与えずに何度も何度もひっくり返し続けます。ボールが境界にあるとき、または境界を越えたときはいつでも、ボールが境界から離れるようにします。

于 2013-07-01T16:07:43.943 に答える