2012-11-03 4 views
1

여기는 마우스를 클릭 한 곳마다 볼 드롭과 바운스가있는 프로그램입니다. 공이 중력의 힘으로 떨어지는 속도를 변경하는 방법을 아는 사람이 있습니까? 임 : 이에 대한 적절한 해결책을 찾아 내려고 노력 중입니다 ...하지만 약간의 문제가 있습니다. 모든 도움이나 의견은 많은 도움이 될 것입니다.볼 드롭 속도 변경 중 ... 처리 중

float x; 
    float y; 
    float yspeed = 0; 
    float xspeed = 0; 
    float balldiameter = 10; 
    float ballradius = balldiameter/2; 

    void setup() { 
    size (400,400); 
    background (255); 
    fill (0); 
    ellipseMode(CENTER); 
    smooth(); 
    noStroke(); 
    x = width/2; 
    y = height/2; 
    } 

    void draw() { 
    mouseChecks(); 
    boundaryChecks(); 
    ballFunctions(); 
    keyFunctions(); 
    } 

    void mouseChecks() { 
     if (mousePressed == true) { 
     x = mouseX; 
     y = mouseY; 
     yspeed = mouseY - pmouseY; 
     xspeed = mouseX - pmouseX; 
     } 
    } 

    void boundaryChecks() { 
    if (y >= height - ballradius) { 
    y = height - ballradius; 
    yspeed = -yspeed/1.15; 
    } 
    if (y <= ballradius) { 
    y = ballradius; 
    yspeed = -yspeed/1.35; 
    } 
    if (x >= width -ballradius) { 
    x = width -ballradius; 
    xspeed = -xspeed/1.10; 
    } 
    if (x <= ballradius) { 
    x = ballradius; 
    xspeed = -xspeed/1.10; 
    } 
    } 

void ballFunctions() { 
    if (balldiameter < 2) { 
    balldiameter = 2; 
    } 
    if (balldiameter > 400) { 
    balldiameter = 400; 
    } 
    ballradius = balldiameter/2; 
    background(255); //should this be in here? 
    ellipse (x,y,balldiameter,balldiameter); 
    yspeed = yspeed += 0.2; 
    xspeed = xspeed/1.005; 
    y = y + yspeed; 
    x = x + xspeed; 
    } 
void keyFunctions() { 
    if (keyPressed) { 
    if(keyCode == UP) { 
    balldiameter +=1; 
    } 
    if (keyCode == DOWN) { 
    balldiameter -=1; 
    } 
    } 
} 
+1

무엇을 시도 했습니까? 마지막 프레임에서 경과 시간을 얻을 수 있다면 draw() 중에 yspeed를 9.8 * 시간 (초 단위)으로 곱하면됩니다. –

+0

어떤 라이브러리를 사용하고 있습니까? 당신은'size'와'background'와 같은 것을 호출하지만 그 함수들은 당신의 코드에서 정의되지 않습니다. – durron597

답변

5

지구상의 가속도는 9.81 m/s^2입니다. 따라서 마우스가 클릭 된 지점에서 볼의 속도가 0이면 최종 속도는 시간과 관련하여 통합 된 가속도가됩니다. 이것은 (9.81 * t)/2가 될 것입니다. 여기서 t는 초입니다. 결과 단위는 m/sec가됩니다. 그리기 위해 미터를 일부 화면 공간 단위로 변환해야합니다.