给出if语句永久绘制圆圈 - 处理

时间:2018-05-26 02:28:09

标签: java for-loop if-statement processing

我有一个if语句,用于检查碰撞:

if (BallY == y && BallX == x) // check for collision
  {
    x = 80; // reset x to initial
    y = 240; // reset y to initial
    z = 100; //reset z to initial
  }

我在for语句中有一个if循环:

if (BallY == y && BallX == x) // check for collision
  {
    x = 80; // reset x to initial
    y = 240; // reset y to initial
    z = 100; //reset z to initial
    for (int i=50; i<width; i+=80)
    {
      fill(250,0,0);
      ellipse(i, 50, 70, 70);
    }
  }

因此,重点是在碰撞发生后在屏幕顶部绘制一条圆圈。但是,这段代码只会瞬间绘制它们然后就会消失。如果发生碰撞,我怎么能让他们留下来?

1 个答案:

答案 0 :(得分:1)

您可能希望使用跟踪球是否发生碰撞的boolean值。检测到碰撞时将其设置为true,然后检查值以确定要绘制的内容。这是一个简化的例子:

boolean drawRed = false;

void draw() {

  if (mouseY > height/2) {
    drawRed = true;
  }

  if (drawRed) {
    background(255, 0, 0);
  }
}

此代码默认情况下绘制灰色背景,但如果鼠标进入窗口的下半部分,则会变为红色。即使您将鼠标移回顶部,它也会保持红色。

这只是一个简单的例子,但想法是一样的:使用变量来跟踪草图的状态,在满足条件时设置该变量,并检查该变量以决定要绘制的内容。

顺便说一句,你的碰撞检测有点可疑。你可能不想检查球是否在一个确切的位置。相反,你可能想检查球是否与某个区域重叠。 Here是处理中可能有用的碰撞检测指南。

如果仍然无法使其正常运行,请将问题范围缩小到MCVE,而不是发布已断开连接的代码段或完整草图。祝你好运!