0

我有沿直线移动的经典球:

class Circle{
  float x,y,vx,vy,size;        

 Circle(float ax,float ay){
   x = ax;
   y = ay;
   size = 5;
   vx = random(-.1,.1);
   vy = random(-.1,.1);
}

void update(int w,int h){
   x += vx;
   y += vy;
   if(x < 0 || x > w) vx *= -1;
   if(y < 0 || y > h) vy *= -1;
 }

void draw(){
  pushStyle();
  noStroke();
  fill(0);
  ellipse(x,y,size,size);
  popStyle();
}

}

但是,我不希望他们排成一行。

我希望它们以不规则的曲线移动。我可以添加什么?噪音?罪?因为?

非常感谢。

4

2 回答 2

0

取决于你想要什么,但如果你想让它们按照正弦曲线移动,例如,你可以这样做:

class Circle{
    float x,y,vx,vy,size;
    float sinCtr = 0;

    // ...

    void update(int w,int h){
        x += vx;
        y = h/2 + 50 * Math.sin(sinCtr);
        sinCtr += 0.02;
    }
于 2012-10-29T05:41:20.753 回答
0

你可能想看看这个页面。使用工作样本简化方程的简单指南。请注意,相同的技术可用于时间或空间曲线。

编辑:忘了说该网站是用于 Flash 的,但无论如何,即使您像我一样没有 Flash 知识,也很容易理解。并且代码示例很容易适应。

于 2012-10-29T04:18:35.003 回答