我如何才能让一组中的精灵在绘制函数中只在随机位置生成一次?

How do I have it so that sprites in a group all spawn in random locations only once in the draw function?

我想在我的代码中使用它,以便组变量中的所有精灵在绘制函数中一次生成在不同位置。我目前遇到的问题是,由于绘图功能不断重复,因此所有精灵都在不断改变位置;正如您所想象的那样,它们在整个屏幕上快速移动。

  drawSprites(toppingsGroup);
  for (var i = 0; i < toppingsGroup.length; i++) {
     toppingsGroup[i].position.x = 600;
     toppingsGroup[i].position.y = random(height);

}

您有两个选择:

  1. 将随机位置代码移至setup()函数
  2. 将随机位置代码包装在 if 块中,使其只运行一次

选项 #1 很简单,但这是选项 #2 的示例

let groupPositioned = false;

function draw() {
  if (!groupPositioned) {
    for (var i = 0; i < toppingsGroup.length; i++) {
     toppingsGroup[i].position.x = 600;
     toppingsGroup[i].position.y = random(height);
    }
    groupPositioned = true;
  }

  drawSprites(toppingsGroup); 
}