乒乓球运动不顺畅



我想在处理中做一个乒乓球游戏。但是球的运动不是很流畅。我尝试更改帧速率并降低球的速度,但随后移动速度似乎不是恒定的。这可能是性能问题吗?我是否做错了什么,或者处理可能不是正确的事情,即使是简单的游戏?(我的目标是尝试处理.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();
  }
}

你的帧率对我来说似乎很高。 30帧通常是处理和Flash等平滑动画的良好速度。我还会将所有整数更改为浮动,因为浮动更适合平滑动画。

接下来我要考虑的是添加一些宽松政策,这可能会使它变得平滑。请参阅以下信息 processing.org:

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

并玩一玩。

相关内容

  • 没有找到相关文章

最新更新