xxxxxxxxxx
let circle_num = 0; //円の数
let vecLocation = []; //円の中心の位置ベクトル
let vecVelocity = []; //円の速度ベクトル
let vecColor = []; //円の色
circle_size = 10;
function setup() {
createCanvas(windowWidth, windowHeight);
background(100);
createCanvas(windowWidth, windowHeight); //画面を生成
frameRate(30); //フレームレート
//for (let i = 0; i < circle_num; i++) {
//vecLocation[i] = createVector(random(0,width),random(0,height));
//vecVelocity[i] = createVector(random(-10,10), random(-10,10));
//vecColor[i]=[random(200,230),random(200,230),random(230,250),random(220,240)]
//}
}
function draw() {
//スポーン
if(random(0,100)<50){
vecLocation[circle_num] = createVector(mouseX, mouseY);
vecVelocity[circle_num] = createVector(random(-10,10), random(-10,10));
vecColor[circle_num]=[random(230,240),random(230,240),random(230,240),random(240,255)]
circle_num+=1
//増え過ぎ抑制
if(circle_num>100 && random(0,100)<70){
vecLocation.shift();
vecVelocity.shift();
vecColor.shift();
circle_num -= 1;}
console.log(circle_num)
}
if(circle_num>200){
vecLocation.shift();
vecVelocity.shift();
vecColor.shift();
circle_num -= 1;
vecLocation.shift();
vecVelocity.shift();
vecColor.shift();
circle_num -= 1;
console.log(circle_num)
}
background(135, 206, 250); //背景を描画
noStroke(); //枠線なし
//fill(vecColor[0]); //塗りの色
//円の数だけくりかえす
for (let i = 0; i < circle_num; i++) {
fill(vecColor[i])
vecLocation[i].add(vecVelocity[i]); //円の座標を更新
ellipse(vecLocation[i].x, vecLocation[i].y, circle_size, circle_size); //指定した位置に円を描画
if (vecLocation[i].x < 0 || vecLocation[i].x > width) { //もし画面の左端、または右端に到達したら
vecVelocity[i].x = vecVelocity[i].x * -1; //X方向のスピードを反転
}
if (vecLocation[i].y < 0 || vecLocation[i].y > height) { //もし画面の下端、または上端に到達したら
vecVelocity[i].y = vecVelocity[i].y * -1; //Y方向のスピードを反転
}
}
//衝突
for (let i = circle_num-1; i >0; i--) {
for (let j = 0; j < i; j++) {
circle_distance = Math.sqrt(Math.pow(vecLocation[j].x - vecLocation[i].x ,2)+Math.pow(vecLocation[j].y - vecLocation[i].y , 2))
//console.log(circle_distance)
if(circle_distance < circle_size){
vecVelocity[i] = createVector(vecVelocity[i].x*-1, vecVelocity[i].y*-1)
vecVelocity[j] = createVector(vecVelocity[j].x*-1, vecVelocity[j].y*-1)
vecColor[i]=[random(220,240),random(220,240),random(240,255),random(100,240)]
vecColor[j]=[random(220,240),random(220,240),random(240,255),random(100,240)]
}
}
}
fill(255,255,255,200)
ellipse(mouseX, mouseY, 15,15);
}