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();
  }
}
4

1 に答える 1

1

あなたのframeRateは私にはかなり高いようです。通常、処理やフラッシュなどのスムーズなアニメーションには30フレームが適しています。また、フロートはスムーズなアニメーションに適しているため、すべてのintをフロートに変更します。

次に見るのは、イージングを追加することです。これにより、スムーズになる可能性があります。processing.orgでこの情報を参照してください:

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

遊びます。

于 2012-06-09T16:15:45.553 に答える