我想创建一个简单的粒子模拟。有两种类型的粒子静态和移动。静态粒子将运动粒子吸引到其中心。静态颗粒具有规定它们是如何硬拉动移动的颗粒无法阻止粒子过冲
var angle:Number = Math.atan2(moving.y - static.y , moving.x - static.x);
var dist = Point.distance(new Point(moving.x,moving.y) , new Point(static.x,static.y));
moving.velX += Math.cos(angle + Math.PI) * static.strength/dist;
moving.velY += Math.sin(angle + Math.PI) * static.strength/dist;
的问题是当颗粒只是路过的中心的距离是非常小的强度属性,它导致非常大的速度值。
在计算速度之前,我添加了额外的距离检查。
if (dist < 1)
dist = 1;
但问题仍然存在。我不知道这个问题。
这里是超调发生的快照。
我在原始代码中没有使用'static'作为变量名。 –
@SayamQazi,检查你的代码,你有'static.x'和'static.y'。称它为'force',称之为'atttractor'或者其他只是不变的或类名变成与保留字相同的颜色。 –
是的,我知道。我正在谈论我的原始代码。我没有在SO上拷贝我的原始代码。 –