加工中如何在Y坐标上制作重复的3D球?

How to make repeading 3D ball on Y coordinate in processing?

我正在制作有关处理的动画。然后,我对一个问题感到困惑。我为你准备了一个简单的代码。另外,我认为这个问题对初学者有帮助。

PShape ball;
float ballSpeed = random(0.5, 1);
float ballSize = random(5, 10);
float x = 200, y = 300, z = 0;

void setup() {
  size(400, 400, P3D);
  noStroke();         // That's for "not see details on sphere"
  ball = createShape(SPHERE, ballSize);
}

void draw() {
  background(0);
  translate(x, y, z); // rotate the ball
  println(y);         // checking the y coordinates
  fill(255);
  shape(ball);
  y -= ballSpeed;     // the ball can go to top
}

所以,我想设定一个条件,如果球到达 100,球应该 return 或开始它的第一个位置,然后再次到达 100。我尝试了很多 if 条件,但无法弄清楚。 如果你帮助我,我会很高兴。 谢谢

只要反转ballSpeed,如果球的y坐标小于等于100分别大于等于300:

y -= ballSpeed;
if (y <= 100 || y >= 300) {
    ballSpeed = -ballSpeed;
} 

注意球在向上移动。当小球到达100时,ballSpeed反转,小球改变方向向下运动。如果球到达原始位置 (300),ballSpeed 再次反转,球再次改变方向。


如果你想让小球在300重新开始,当它到达y坐标100时,设置y = 300:

就足够了
y -= ballSpeed;
if (y <= 100) {
    y = 300;
}