Я хочу разделить два сталкивающихся круга, чтобы отбросить их поровну на минимальную величину, чтобы они были идеально разделены.
Пока у меня есть это:
var totalRadius : Number = _circle1.radius + _circle2.radius;
var x : Number = _circle1.position.x - _circle2.position.x;
var y : Number = _circle1.position.y - _circle2.position.y;
var distanceSquared : Number = (x * x) + (y * y);
if (distanceSquared < totalRadius * totalRadius)
{
var distance : Number = Math.sqrt(distanceSquared);
var separation : Number = totalRadius - distance;
// No idea what to do now!
}
Это все, что я понял до сих пор. Итак, я знаю, что произошло столкновение, и я знаю, что каждый круг - это separation
сумма друг от друга (поэтому я думаю, разделить на 2, чтобы разделить их поровну).
Проблема в том, что у разделения нет подразумеваемой направленности, и я не знаю, что делать. Я не могу просто сделать circle1.position -= separation / 2; circle2.position += separation / 2
, потому что это сместит оси X и Y одинаково.
Как мне добавить направленность к separation
?
Спасибо!