所以我必须创建一个粒子系统,但只制作一个烟花'让它在画布的中心消失。我只是坚持如何移动粒子并让它们从中间开始。现在他们只是到处飞。
`function Particle() {
this.x = Math.random() * canvas.width;
this.y = Math.random() * canvas.height;
this.vx = Math.random() * 10 - 5;
this.vy = Math.random() * 10 - 5;`
我一直在摆弄数字,但它要么影响粒子的颜色,要么只显示一个粒子消失。我根本没有使用粒子工作,我在网上找到的通常是Maya或Unity。
答案 0 :(得分:0)
我假设每个粒子执行此代码,是吗?
要将它放在画布上,你需要的位置是(画布宽度/ 2,画布高度/ 2),或者:
this.x = canvas.width / 2;
this.y = canvas.height / 2;
但这只是一个片段。要使它围绕该点聚类,您可以尝试使用铃声函数,或者更简单地将随机乘以限制:
this.x = (canvas.width / 2) + Math.random() * (radius * 2) - radius;
this.y = (canvas.height / 2) + Math.random() * (radius * 2) - radius;
关于第二种方法的唯一问题是,一些粒子将向后飞向烟花。您可以通过找到相对方向来解决这个问题:
Vector2 dir = ( Vector2(this.x, this.y) - Vector2(canvas.width / 2, canvas.height / 2) ).normalized;
将其乘以随机向量(或更实际地,幂函数)
Vector2 v = dir * Math.random();
-OR -
Vector2 v = dir * Math.pow(dir.magnitude, 2);
其中Vector2是任何标准的2D矢量类(不确定你使用的是什么,你可能想要自己动手),。maggnitude只是sqrt(vx ^ 2 + vy ^ 2),而.normalized是(vx) /v.magnitude,vy / v.magnitude)。
应该这样做。