2017-10-22 3 views
0

화면에서 공을 움직이는 처리 중 메서드를 만드는 중입니다. 그러나 키를 누를 때 볼은 움직이지 않을 것이지만, 이론에서는 그렇게해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?개체를 움직이게하는 메서드를 만드는 방법

float x = 100; 
float y = 100; 
void setup() { 
    size(400, 400); 
} 
void draw() { 
    fill(0); 
    ellipse(x, y, 10, 10); 
    move(); 
} 
void reset() { 
    x = height/2; 
    y = width/2; 
} 
void move() { 
    if (keyPressed == true) { 
    if (key == 'a') { 
     x = x - 3; 
    } else if (key == 's') { 
     y = y + 3; 
    } else if (key == 'd') { 
     x = x + 3; 
    } else if (key == 'w') { 
     y = y + 3; 
    } else if (key == ' ') { 
     reset(); 
    } 
    } 
} 
+0

좌표를 업데이트 한 후에'draw() '해야 할 수도 있습니까? – mustaccio

+0

@mustaccio 처리는 자동으로'draw()'함수를 호출합니다. –

+0

어떻게 해결할 수 있습니까? 끝에 끌기가 도움이되지 않았다 –

답변

1

코드를 실행할 때 원이 움직이는 것을 볼 수 있습니다.

먼저, 이전 프레임을 삭제하지 않으므로 공을 보는 대신 공의 모든 이전 위치에서 흔적을 볼 수 있습니다. 이 문제를 해결하려면 모든 프레임에 background() 함수를 호출 할 수 있습니다.

둘째, 사용자가 ws 키를 모두 누르면 동일한 작업을 수행합니다. 그래서 두 경우 모두 공이 떨어집니다. w 케이스에서 로직을 변경하여이 문제를 해결할 수 있습니다.