Как создать функцию обнаружения столкновения окружности в PyGame? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь сделать Agar.io-подобную игру с Pygame, для тех, кто не знает, это игра, где вы управляете движением круга с помощью курсора и съедаете других врагов круга, чтобы увеличить свой размер, я новичок в Python и я не знаю много, хотя, я все сам пока выяснил, но я застрял в части обнаружения столкновений, я хочу создать функцию, которая возвращает true, когда она касается другого круга. Я пытался найти решение, но не смог его найти.

1 Ответ

1 голос
/ 11 июня 2019

2 окружности пересекаются, если расстояние между 2 центральными точками меньше суммы 2 радиусов.Расстояние между двумя точками может быть вычислено как Евклидово расстояние :

dist = math.sqrt(dx*dx + dy*dy)

В пигаме это может быть вычислено как pygame.math.Vector2.distance_to().

Если 1-й круг определяется центральной точкой (x1, y1) и радиусом radius1, а 2-й круг определяется центральной точкой (x2, y2) и радиусом radius2, то:

centerPoint1 = pygame.math.Vector2(x1, y1)
centerPoint2 = pygame.math.Vector2(x2, y2)

collide = centerPoint1.distance_to(centerPoint2) < (radius1 + radius2)

collide равно True, если 2 круга пересекаются.

Если вы хотите избежать операции с квадратным корнем, вы можете использовать distance_squared_to() и сравнить квадрат обоихдлина:

max_dist_square = (radius1 + radius2)*(radius1 + radius2)
collide = centerPoint1.distance_squared_to(centerPoint2) < max_dist_square
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...