私は単純な粒子シミュレーションを作成しようとしています。静的な粒子と動いている粒子の2種類があります。静的粒子は、動く粒子をその中心に引き付ける。静的粒子は、移動する粒子を引いているどのようにハード粒子がオーバーシュートするのを止めることはできません
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'とか、変数ではないものやクラス名を予約語と同じ色に変えます。 –
はい私は知っています。私は元のコードについて話していました。私はここに元のコードを貼り付けてコピーしませんでした。 –