三个球的不同速度

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

我是处理方面的新编码员,这就是为什么请保持谦逊。我为您编写了一个简单的代码。通常,我的代码会更长,更复杂。但是,我为您编写了一个简单的代码。

//main class
ArrayList<Clouds> clouds = new ArrayList();

void setup() {
  size(1200, 800, P3D);

  for (int i = 0; i < 3; i++)
  {
    Clouds C = new Clouds();
    clouds.add(C);
  }
}

void draw() {
  background(0); 
  for (int i = 0; i < clouds.size(); i++)
  {
    clouds.get(i).drawClouds();
  }
}

//Clouds class

class Clouds
{
  float xC, yC, zC, speedC;
  public Clouds()
  {
    xC = 20;
    yC = 40;
    zC = 0;
    noStroke();
    speedC = 1;
  }
  public void drawClouds()
  {
    translate(xC,yC);
    pushMatrix();
    makingClouds(100, 100, 100);
    popMatrix();
    if (xC > width - 780) {
      xC = -660; 
    }
    xC += speedC; 
  }
  public void makingClouds(float xF, float yF, float zF ) {
    translate(xF, yF, zF);
    pushMatrix();
    lights();
    scale(1, 1, 1);
    sphere(20);
    popMatrix();
  }
}

我希望,在这里写两个课没错,但是我整整花了两天的时间,让我感到恶心。所以我的问题是:如您所见,有三个球体,它们具有相同的速度,但是当我运行程序时,它们以不同的速度结束。他们怎么有相同的速度?如果您帮助我,您将成为我的英雄!谢谢。

processing
1个回答
1
投票

[translate()不仅设置转换,它还定义了转换矩阵并将新的转换矩阵乘以当前矩阵。

您必须在不同位置构建云:

translate()
void setup() {
    // [...]

    for (int i = 0; i < 3; i++) {
        Clouds C = new Clouds(20, i*40);
        clouds.add(C);
    }
} 

并在class Clouds { float xC, yC, zC, speedC; public Clouds(float x, float y) { xC = x; yC = y; zC = 0; // [...] } / translate块中移动pushMatrix()

pushMatrix()

示例代码:

popMatrix()
© www.soinside.com 2019 - 2024. All rights reserved.