float accelX=0.2,accelY=0.1;//加速度 float speedX=0,speedY=0;//速度 float posX=10,posY=10;//オブジェクトの位置 int size = 40;//オブジェクトのサイズ float forceY=0.01;//オブジェクトに加える力 void setup() { size(400, 400); background(255); } void draw() { background(255); /* 軌跡を残す場合は、下の3行をON、backgoundをOFFにする fill(255, 50); //透明度のあるrectを描画 rect(0, 0, width, height); fill(0); //オブジェクトは黒 */ //posXが画面の横幅を超えるか0より下になった場合速度を反対にする if(posX > width) { posX = width; speedX *= -1; }else if(posX < 0){ posX = 0; speedX *= -1; } //posYが画面の高さを超えるか0より下になった場合速度を反対にする if(posY > height) { posY = height; speedY *= -1; }else if(posY < 0) { posY = 0; speedY *= -1; } //加速度が一定の値を超えると逆の力を加える if(accelY > 1.1 || accelY < -0.1) { forceY *=-1; } //力を加える accelY += forceY; //速度に加速度を作用させる speedX += accelX; speedY += accelY; //位置に速度を作用させる posX += speedX; posY += speedY; noStroke();//線なし fill(0);//塗りは黒 ellipse(posX,posY,size,size);//円を描画 }