У меня проблема с столкновением с кругом, а не с обнаружением столкновения, а с обработчиком, который решает конфликт.Столкновение статического круга с разным размером (радиус)
Чтобы все было в порядке, я буду использовать два круга. Одна из них имеет радиус 50, а другой 30. Когда круги пересекаются это то, что обработчик делает
//Calculates distance between circles
var nDistX:Number = CircleB.x - CircleA.x;
var nDistY:Number = CircleB.y - CircleA.y;
var nDistance:Number = Math.sqrt (nDistX * nDistX + nDistY * nDistY);
//Gets the radius
var radiusA:Number = CircleA.width/2;
var radiusB:Number = CircleB.width/2;
//Calculates midpoint
var midpointX:Number = (CircleA.x + CircleB.x)/2;
var midpointY:Number = (CircleB.y + CircleB.y)/2;
//Calculates the new position
CircleA.x = midpointX + radiusA * (CircleA.x - CircleB.x)/nDistance;
CircleA.y = midpointY + radiusA * (CircleA.y - CircleB.y)/nDistance;
MCBallB.x = midpointX + radiusB * (CircleB.x - CircleA.x)/nDistance;
MCBallB.y = midpointY + radiusB * (CircleB.y - CircleA.y)/nDistance;
Код выше работает безупречно, когда в отношении двух кругов с тем же радиусом. Когда круги пересекаются (например, нерестится в координатах, близких к каждому из них) круги кружатся друг от друга.
Проблема начинается, когда круги имеют два разных размера. То, что происходит, когда они пересекаются, - это то, на что похоже, что большой круг убегает от меньшего круга, все еще прикрепленного.
У любого из вас есть идея, почему это происходит?