2012-05-24 6 views
0

처리 중 탁구를 만들고 싶습니다. 그러나 볼의 움직임은 부드럽지 않았습니다. 나는 프레임 속도를 바꾸고 공의 속도를 줄이려고 시도했지만, 그 다음에 이동 속도는 일정하지 않은 것처럼 보인다. 이것이 성능 문제 일 수 있습니까? 잘못된 게임을하고 있습니까, 아니면 간단한 게임을 처리하는 것이 맞지 않을 수 있습니까? (내 목표는 processing.js를 시험해보고 플러그인없이 실행되는 게임을 만드는 것이었다.) 여기 내 코드는 다음과 같습니다.탁구 동작이 부드럽 지 않음

// Colorset 
color scrBG; 
color bastards; 

// Border for the Paddle 
int border; 

// The Paddle 
int padWid; 
int padHei; 
float padX; 
float padY; 

// The Ball 
float ballX; 
float ballY; 
int ballRad; 

int speed; 
float velX; 
float velY; 

boolean playing = false; 



void setup() 
{ 
    border = 5; 

    scrBG = #EEEEEE; 
    bastards = #FFF0EB; 

    padWid = 80; 
    padHei = 10; 
    ballRad = 15; 
    speed = 5; 
    velX = velY = speed; 

    size(800, 600); 
    background(scrBG); 
    noStroke(); 
    noCursor(); 
    //frameRate(100); 
    smooth(); 
} 

void draw() 
{ 

    background(bastards);drawPaddle(); 
    drawBall(); 
} 

void drawBall() 
{ 

    if(!playing) 
    { 
    ballX = padX+padWid/2; 
    ballY = height-border-padHei-ballRad/2-2; 
    } 
    else 
    { 
if(ballY > height) 
{ 
    ballOut(); 
} 

if(ballY > padY && ballX < padX + padWid && ballX > padX) 
{ 
    velY = -velY; 
    ballY = padY-ballRad-1; 
} 
if(ballX < ballRad) 
{ 
    velX = -velX; 
    ballX = ballRad+1; 
} 
if(ballX > width-ballRad) 
{ 
    velX = -velX; 
    ballX = width-ballRad-1; 
} 
if(ballY < ballRad) 
{ 
    velY = -velY; 
    ballY = ballRad+1; 
} 


ballY += velY; 
ballX += velX; 
    } 

    fill(0); 
    ellipse(ballX, ballY, ballRad*2, ballRad*2); 

} 

void drawPaddle() 
{ 
    padX = constrain(mouseX, border, width-padWid-border); 
    padY = height-padHei-border; 

    fill(0); 
    rect(padX, padY, padWid, padHei); 
} 

void startLevel() 
{ 
    playing = true; 
} 

void resetLevel() 
{ 
    playing = false; 
} 

void ballOut() 
{ 
    playing = false; 
} 

void mouseClicked() 
{ 
    if(playing) 
    { 
    resetLevel(); 
    } 
    else 
    { 
    startLevel(); 
    } 
} 

답변

1

프레임 레이트는 나에게 최고로 느껴집니다. 30 프레임은 일반적으로 처리 및 플래시와 같은 원활한 애니메이션을위한 좋은 속도입니다. 수레가 부드러운 애니메이션을 위해 더 좋기 때문에 모든 내 int를 수레로 바꿀 것입니다.

내가보기에는 다음 사항은 약간의 여유를 추가하는 것입니다.

www.processing.org/learning/basics/easing.html

을하고 연극을 가지고 : processing.org에이 정보를 참조하십시오.

+0

응답 해 주셔서 감사합니다. 보시다시피 높은 프레임 속도는 주석 처리됩니다. 방금 테스트 했어. 나는 모든 것을 위해 수레를 사용했다. 그것은 볼의 움직임과 관련이있다. 나는 모든 것을 플로트로 만들려고했지만 아무런 효과가 없다. 그냥 분명히 : 큰 문제는 없으며, 나는 그 운동이 완전히 일정하지 않다고 생각합니다. –

+0

frameRate를 주석 처리하면 스크립트는 컴퓨터가 빠르게 실행됩니다. 따라서 높은 frameRate를 주석 처리하면 실제로 100FPS보다 빠르게 실행될 수 있습니다. CPU 사용량을 확인하십시오. 나는 맥을 사용하고 나는 처리가 이상하게 무거워 질 수 있다는 것을 알아 냈다. 내가 그걸봤을 때 나는이 문제가있는 유일한 사람이 아니라는 것을 발견했다. –

+0

나는 그것을 역시했다. 그러나 공 운동 ist는 아직도 흔들린다. 너도 그걸 볼 수 있니? (나는 윈도우를 사용하고 있는데, CPU 사용은 문제가되어야한다고 생각한다.) –

관련 문제