Давайте представим ситуацию: изображение гранаты перекрыло изображение земли:
Пусть
Rect земли =
Rect(0, 90, 100, 10) с окном
100х100рх
Случай 1.
Пусть
х и
у гранаты хранятся отдельно.
Тогда нужно создать новый
Rect с координатами гранаты и размером желаемого хитбокса. Если включить отрисовку такого
Rect'а, то можно увидеть такую картину:
То есть, это и есть хитбокс гранаты.
Далее мы должны взять каждую точку хитбокса на картинке (это хорошо работает с маленькими целевыми и большими проверяющими хитбоксами, если бы земля была маленькой, а граната - огромной, то проверку нужно было бы делать и от земли к гранате и от гранаты к земле) и сравнить перекрывание с хитбоксом земли:
groundRect.collidepoint(granadeRectPoint)
# True если перекрывается
А далее можно производить требуемые действия, например, уничтожить экземпляр гранаты или обнулить её вектор движения.
Случай 2.
Пусть
х и
у гранаты равны
х и
у изображения.
Тогда нужно извлечь
Rect с координатами гранаты из изображения:
granadeRect = granadeImage.get_rect()
Если включить отрисовку такого
Rect'а, то можно увидеть такую картину:
То есть, это и есть хитбокс гранаты.
Далее мы должны взять каждую точку хитбокса на картинке (это хорошо работает с маленькими целевыми и большими проверяющими хитбоксами, если бы земля была маленькой, а граната - огромной, то проверку нужно было бы делать и от земли к гранате и от гранаты к земле) и сравнить перекрывание с хитбоксом земли:
groundRect.collidepoint(granadeRectPoint)
# True если перекрывается
А далее можно производить требуемые действия, например, уничтожить экземпляр гранаты или обнулить её вектор движения.