У меня есть сетка эллипсов, созданная двумя циклами for(). Я бы хотел, чтобы все эти эллипсы превращались в mouseX и mouseY, когда mousePressed == true, в противном случае они возвращаются на свое место в сетке. Как я могу это сделать? Я начал с этого шаблона, который не работает, так как я не могу понять, как это влияет на положение эллипсов, но замедление настроено.
float x;
float y;
float easeIn = 0.01;
float easeOut = 0.08;
float targetX;
float targetY;
void setup() {
size(700, 700);
pixelDensity(2);
background(255);
noStroke();
}
void draw() {
fill(255, 255, 255, 80);
rect(0, 0, width, height);
for (int i = 50; i < width-50; i += 30) {
for (int j = 50; j < height-50; j += 30) {
fill(0, 0, 0);
ellipse(i, j, 5, 5);
if (mousePressed == true) {
// go to mouseX
targetX = mouseX;
// ease in
float dx = targetX - x;
if (abs(dx) > 1) {
x += dx * easeIn;
}
//go to mouseY
targetY = mouseY;
// ease in
float dy = targetY - y;
if (abs(dy) > 1) {
y += dy * easeIn;
}
} else {
// return to grid
targetX = i;
// ease out
float dx = targetX - x;
if (abs(dx) > 1) {
x += dx * easeOut;
}
// return to grid
targetY = j;
// ease out
float dy = targetY - y;
if (abs(dy) > 1) {
y += dy * easeOut;
}
}
}
}
}
Любая помощь будет принята с благодарностью. Я не уверен, в каком порядке делать вещи/какие элементы должны содержаться в цикле.
Спасибо!