我是处理方面的新编码员,这就是为什么请保持谦逊。我为您编写了一个简单的代码。通常,我的代码会更长,更复杂。但是,我为您编写了一个简单的代码。
//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();
}
}
我希望,在这里写两个课没错,但是我整整花了两天的时间,让我感到恶心。所以我的问题是:如您所见,有三个球体,它们具有相同的速度,但是当我运行程序时,它们以不同的速度结束。他们怎么有相同的速度?如果您帮助我,您将成为我的英雄!谢谢。
[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()