java - 处理:为什么我的粒子系统跟随鼠标在不同的位置绘制两次?
问题描述
我是处理新手,我希望我的粒子系统跟随我的鼠标。目前,它在鼠标后面(我想这很好),但它也画了两次。到目前为止,这是我所拥有的:我还有一个我没有包含的“星”类,它绘制了一个跟随鼠标的简单星。
ParticleSystem ps;
void setup() {
ps = new ParticleSystem(new PVector(mouseX,mouseY));
size(1000,1000);
frameRate(30);
noStroke();
}
void draw(){
background(30);
ps.followMouse();
ps.addParticle();
ps.run();
}
class ParticleSystem {
ArrayList<Particle> particles = new ArrayList<Particle>();
PVector origin;
ParticleSystem(PVector position) {
origin = position.copy();
}
void addParticle() {
particles.add(new Particle(origin));
}
void run() {
for (int i = particles.size()-1; i >= 0; i--)
particles.get(i).run();
}
void followMouse() {
PVector mouse = new PVector(mouseX, mouseY);
origin = mouse.sub(origin);
}
}
class Particle {
PVector pos, velocity = new PVector(random(-1, 1), random(-2, 0)), acceleration = new PVector(0, 0.05);
Particle(PVector l) {
pos = l.copy();
}
void run() {
update();
display();
}
void update() {
velocity.add(acceleration);
pos.add(velocity);
}
void display() {
noStroke();
fill(random(255),random(255), random(255));
ellipse(pos.x,pos.y, 8, 8);
}
}
解决方案
改成followMouse()
这样:
void followMouse() {
origin = new PVector(mouseX, mouseY);
}
推荐阅读
- amazon-web-services - 是否可以在 AppSync 解析器中引用 CloudFormation 资源名称?
- slack-api - 如何使用斜杠命令向频道显示交互式消息,除了唤起它的人?
- java - 注册用户后自动登录
- assembly - 带有面包板的汇编语言可编程微控制器
- node.js - 了解 Lambda 以调用 API
- c# - 检索启动进程的实际用户帐户
- c++ - 如何在if语句c ++中将字符串转换为更低
- javascript - 类值上的 MutationObserver
- node.js - 节点:模块解析失败:意外令牌“您可能需要适当的加载程序来处理此文件类型”
- python - 选择一定范围的行创建一个db