간단한 입자 시뮬레이션을 만들려고합니다. 정적 및 이동의 두 가지 유형의 입자가 있습니다. 정적 입자는 움직이는 입자를 중심으로 끌어 당깁니다. 정적 입자들이 이동하는 입자를 당기는 방법 하드입자가 오버 슛하는 것을 막을 수 없습니다.
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;
그러나 문제는 여전히 지속됩니다. 나는 문제를 파악할 수 없다.
다음은 오버 슛이 발생하고 있음을 보여주는 스냅 샷입니다.
원본 코드에서 변수 이름으로 '정적'을 사용하지 않았습니다. –
@SayamQazi, 코드를 확인하면'static.x' 및'static.y'가 있습니다. 그것을'force'라고 부르거나'atttractor' 또는 변수가 아닌 클래스 나 예약어와 같은 색으로 변경되는 클래스 이름으로 부르십시오. –
예 알아요. 나는 원래 코드에 대해 이야기하고 있었다. 나는 여기에 원래 코드를 붙여 넣지 않았다. –