processing里让不同的圆跟着鼠标不同的移动
时间: 2024-01-27 09:16:06 浏览: 22
可以使用 Processing 的鼠标事件函数 `mouseMoved()`,然后在函数内部计算每个圆的距离和鼠标的距离,根据距离的差值来确定圆的移动方向和速度。以下是示例代码:
```java
int numCircles = 10;
float[] circleX = new float[numCircles];
float[] circleY = new float[numCircles];
float[] circleSpeedX = new float[numCircles];
float[] circleSpeedY = new float[numCircles];
float maxDistance = 50;
void setup() {
size(400, 400);
smooth();
noStroke();
for (int i = 0; i < numCircles; i++) {
circleX[i] = random(width);
circleY[i] = random(height);
circleSpeedX[i] = random(-2, 2);
circleSpeedY[i] = random(-2, 2);
}
}
void draw() {
background(255);
for (int i = 0; i < numCircles; i++) {
float distance = dist(circleX[i], circleY[i], mouseX, mouseY);
if (distance < maxDistance) {
float speed = map(distance, 0, maxDistance, 4, 0);
float angle = atan2(mouseY - circleY[i], mouseX - circleX[i]);
circleSpeedX[i] = speed * cos(angle);
circleSpeedY[i] = speed * sin(angle);
}
circleX[i] += circleSpeedX[i];
circleY[i] += circleSpeedY[i];
if (circleX[i] < 0 || circleX[i] > width) {
circleSpeedX[i] *= -1;
}
if (circleY[i] < 0 || circleY[i] > height) {
circleSpeedY[i] *= -1;
}
fill(255, 0, 0);
ellipse(circleX[i], circleY[i], 30, 30);
}
}
void mouseMoved() {
// do nothing
}
```
这个示例代码中会生成10个圆,每个圆会根据鼠标的位置来改变移动方向和速度,且不同的圆会对鼠标的位置有不同的响应。