努力理解为什么我的程序不旋转我的图像两次
Struggling to understand why my program doesnt rotate my image twice
这个程序基本上需要改变图像的方向,以便它在改变方向时面向正确的方向下面的代码在图像到达 window 的边界时旋转图像,如果我改变刚转完方向,为什么不转了?
PImage head;
int fizzyX = 400;
int fizzyY = 50;
int movementX=0;
int movementY=0;
float x;
char direction = 'd';
void setup() {
size(800, 800);
background(255);
head = loadImage("Fizzy.PNG");
}
void collisionDetection() {
if (fizzyX == (750)) {
movementX=-1;
key = 'a';
x = PI/2;
}
if (fizzyX == (50)) {
movementX=1;
key = 'd';
}
if (fizzyY == 750) {
movementY=-1;
key = 'd';
}
if (fizzyY < 50) {
movementY=1;
key = 's';
}
}
void keyPressed() {
if (key == 'a' || key == 'A') {
movementX = -1;
movementY = 0;
direction = 'l';
}
if (key == 'd' || key == 'D') {
movementX = 1;
movementY = 0;
direction = 'r';
}
if (key == 'w' || key == 'W') {
movementX = 0;
movementY = -1;
direction = 'u';
}
if (key == 's' || key == 'S') {
movementX = 0;
movementY = 1;
direction = 'd';
}
}
void rotateFizzy() {
if (direction == 'd' && fizzyY == 750) {
x=PI;
}
if (direction == 'u' && fizzyY == 50) {
x=2*PI;
}
}
void draw() {
background(255);
rotateFizzy();
imageMode(CENTER);
translate(fizzyX, fizzyY);
rotate(x);
image(head, 0, 0);
fizzyX+=movementX;
fizzyY+=movementY;
collisionDetection();
}
抱歉复制粘贴代码
查看您发布的其他代码,您必须使用 pushMatrix() 和 popMatrix()。
我发布了 2 个答案,第二个对您的代码提出了很多建议和改进
这个程序基本上需要改变图像的方向,以便它在改变方向时面向正确的方向下面的代码在图像到达 window 的边界时旋转图像,如果我改变刚转完方向,为什么不转了?
PImage head;
int fizzyX = 400;
int fizzyY = 50;
int movementX=0;
int movementY=0;
float x;
char direction = 'd';
void setup() {
size(800, 800);
background(255);
head = loadImage("Fizzy.PNG");
}
void collisionDetection() {
if (fizzyX == (750)) {
movementX=-1;
key = 'a';
x = PI/2;
}
if (fizzyX == (50)) {
movementX=1;
key = 'd';
}
if (fizzyY == 750) {
movementY=-1;
key = 'd';
}
if (fizzyY < 50) {
movementY=1;
key = 's';
}
}
void keyPressed() {
if (key == 'a' || key == 'A') {
movementX = -1;
movementY = 0;
direction = 'l';
}
if (key == 'd' || key == 'D') {
movementX = 1;
movementY = 0;
direction = 'r';
}
if (key == 'w' || key == 'W') {
movementX = 0;
movementY = -1;
direction = 'u';
}
if (key == 's' || key == 'S') {
movementX = 0;
movementY = 1;
direction = 'd';
}
}
void rotateFizzy() {
if (direction == 'd' && fizzyY == 750) {
x=PI;
}
if (direction == 'u' && fizzyY == 50) {
x=2*PI;
}
}
void draw() {
background(255);
rotateFizzy();
imageMode(CENTER);
translate(fizzyX, fizzyY);
rotate(x);
image(head, 0, 0);
fizzyX+=movementX;
fizzyY+=movementY;
collisionDetection();
}
抱歉复制粘贴代码
查看您发布的其他代码,您必须使用 pushMatrix() 和 popMatrix()。 我发布了 2 个答案,第二个对您的代码提出了很多建议和改进