如何在处理过程中在Y坐标上使3D球重复?

问题描述 投票:1回答:1

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

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,球应该返回或开始其第一个位置,然后再次到达100。我尝试了许多条件,但无法弄清楚。如果您能帮助我,我会很高兴。谢谢。

java processing
1个回答
2
投票

只需反转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;
} 
© www.soinside.com 2019 - 2024. All rights reserved.