我的处理代码基于Daniel Shiffman的 Nature Of Code 的振荡章节,主要是根据它的前进方向(鼠标)旋转动子的例子。 它不起作用,虽然我很确定它在某个地方有一个小错误。矩形只是飞到屏幕外面。 书中的例子(未完整):
void display() {
float angle = velocity.heading2D;
stroke(0); fill(175); pushMatrix(); rectMode(CENTER);
translate(location.x,location.y);
rotate (angle);
rect(0,0,30,10);
popMatrix();
}
我的代码:
void show() {
angle = velocity.heading2D();
rectMode(CENTER);
pushMatrix();
translate(location.x,location.y);
rotate(angle);
fill(255,20,20,150);
rect(location.x,location.y,carSize,carSize);
popMatrix();
}
设置并绘制:
Car car ;
void setup() {
car = new Car();
}
void draw() {
mouse = new PVector(mouseX,mouseY);
background(255);
car.show();
car.move();
car.update();
}
答案 0 :(得分:1)
我终于明白了。而不是
translate(location.x,location.y);
rect(location.x,location.y,40,40);
必须是:
translate(location.x,location.y);
rect(0,0,40,40);
因为翻译已经将原点指向对象的位置,而这就是我想要绘制它的位置(0,0)。