Работает ли pygame.colliderect () одинаково в обеих этих ситуациях? - PullRequest
2 голосов
/ 30 марта 2020

Скажем, у меня есть 2 хитбокса: hbox1 и hbox2.

hbox1.colliderect(hbox2)

и

hbox2.colliderect(hbox1)

всегда возвращают одно и то же?

1 Ответ

2 голосов
/ 30 марта 2020

Метод colliderect оценивает, если объект pygame.Rect intersecst, с прямоугольником. hbox1 и hbox2 являются прямоугольными объектами, тогда результат hbox1.colliderect(hbox2) равен результату hbox2.colliderect(hbox1). Операция Коммутативная .
Но обратите внимание, что аргумент colliderect не обязательно должен быть pygame.Rect объектом. Аргументом может быть также кортеж с четырьмя компонентами (x, y, width, height).

Если прямоугольники (x1, y1, w1, h1) и (x2, y2, w2, h2) пересечение может быть оценено следующим образом:

intersect = x1 < x2+w2 and x2 < x1+w1 and y1 < y2+h2 and y2 < y1+h1

Легко видеть, что два прямоугольника можно поменять местами, и результат будет быть таким же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...