Эй, приятель, я думаю, что тебе нужна петля. Это сходит с ума, потому что как только шары касаются, они постоянно обновляются с новой логикой ....
Я не удивлен, но попробуйте поместить цикл в цикл ... должно выглядеть примерно так:
if ( diff < (orb radius))
{
Vector2 PA = (PAn * normal) + (PAt * tangent);
Vector2 PB = (PBn * normal) + (PBt * tangent);
orgA.position = PA;
orgB.position = PB;
}
что-то в этом роде ... Я очень надеюсь, что это немного поможет: /
насколько я понимаю, это в вашем методе обновления, так что имейте в виду, что обновление выполняется постоянно каждую миллисекунду ... так что хорошо, когда вы получаете разницу между сферами и размерами, но после того, как они сталкиваются, и вы хотите, чтобы они перемещались определенным образом вы вычисляете одно и то же уравнение снова и снова ...
Еще лучше, сделайте bool, такой как isCollided, и убедитесь, что вы переключаете это true / false в соответствии с этим утверждением
надеюсь, что мне поможет пример проекта столкновения, если вы хотите, я могу отправить его вам, samerhachem@hotmail.com