В основном я делаю игру с pygame, и вокруг экрана будут прямоугольники. Игроки 1 и 2 игрока. Если какой-либо из игроков 1-го уровня находится в пределах x расстояния от единиц 2 игрока, тогда огонь. Если я сделаю расстояние от центра, то это будет неточно, так как некоторые из этих прямоугольников будут намного длиннее с одной стороны и будут в пределах диапазона увольнения, но центра не будет. Я искал, но не смог найти решение этой проблемы.Pygame; проверяя, является ли кратчайшее расстояние между любыми точками на двух прямоугольниках меньше х суммы?
EDIT: удалены круги. У меня тоже будут круги, но я буду рассматривать их как прямоугольники и использовать их. Они маленькие, а погрешность в 2 пикселя не имеет значения.
Что вы имеете в виду, что некоторые прямоугольники будет больше на одной стороне, это центр? Центр всегда определяется как точка с равным расстоянием между двумя противоположными краями. Если вы хотите, чтобы вы стреляли, когда игроки накладывались, тогда просто проверяйте, когда сталкиваются прямоугольники, ака ['if rect1.colliderect (rect2)'] (https://www.pygame.org/docs/ref/rect. HTML # pygame.Rect.colliderect). Или вы можете временно масштабировать ([inflate] (https://www.pygame.org/docs/ref/rect.html#pygame.Rect.inflate)), пиксели x больше, а затем проверяют на столкновение. –
Я не думал о раздувании, похоже, что это сработает. Я имел в виду, что если есть два длинных тощих прямоугольника, они будут сталкиваться друг с другом, прежде чем они появятся на расстоянии х друг от друга, поскольку расстояние от их центров. Надувание кажется хорошим решением для него. – user3529201