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();
}
}
感謝您的回覆。正如你所看到的,高幀率被註釋掉了。我只是測試它。我用所有的花車,這與球運動有關。我試圖讓所有東西都是浮動的,但它沒有任何區別。只是爲了澄清:沒有什麼大問題,我只是認爲運動並不是完全不變的。 –
如果你註釋掉frameRate,那麼你的腳本將運行得像你的電腦一樣快。因此,評論高幀速率可能實際上使其運行速度超過100FPS。檢查您的CPU使用情況。我使用了一個mac,並且我注意到處理過程可能會很奇怪。當我搜索了一段時間後,發現我並不是唯一一個遇到這個問題的人。 –
我也是這樣做的,但球的運動仍然是shakey。你能看到嗎? (我正在使用windows,我不認爲cpu的使用應該是一個問題,它是一臺新電腦) –