2012-05-24 97 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

您的frameRate似乎對我不利。對於Processing和Flash等平滑動畫來說,30幀通常是一個很好的速度。我也會把所有的整數都改成浮動,因爲浮動更適合流暢的動畫。

接下來我要看的是添加一些緩解措施,這可能會讓它變得平滑。看到這個信息在processing.org:

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

,並有一齣戲。

+0

感謝您的回覆。正如你所看到的,高幀率被註釋掉了。我只是測試它。我用所有的花車,這與球運動有關。我試圖讓所有東西都是浮動的,但它沒有任何區別。只是爲了澄清:沒有什麼大問題,我只是認爲運動並不是完全不變的。 –

+0

如果你註釋掉frameRate,那麼你的腳本將運行得像你的電腦一樣快。因此,評論高幀速率可能實際上使其運行速度超過100FPS。檢查您的CPU使用情況。我使用了一個mac,並且我注意到處理過程可能會很奇怪。當我搜索了一段時間後,發現我並不是唯一一個遇到這個問題的人。 –

+0

我也是這樣做的,但球的運動仍然是shakey。你能看到嗎? (我正在使用windows,我不認爲cpu的使用應該是一個問題,它是一臺新電腦) –