Столкновение не по прямоугольникам в Pygame
Я делаю 2D-игру (платформер). Добавил в землю склон, но так как spritecollide() работает только по прямоугольникам-хитбоксам, то герой как бы парит в воздухе.
Вопрос: как сделать столкновение не по прямоугольникам в pygame, желательно без других модулей (но если других решений нет, пишите своё)?
Ответы (1 шт):
Имею костыльную идею. Предлагаю хитбокс разделить на несколько более мелких хитбоксов. Примерно также это работает в 3д шутерах. Этот метод не даёт чистое столкновение по пикселям(только если на каждый ряд пикселей делать хитбокс). Это должно выглядеть примерно так:
def hitboxcollide(hitboxes,ygroup):
ifcollide = False
for box in hitboxes:
if pygame.sprite.spritecollideany(box,ygroup):
ifcollide = True
break
return ifcollide
hitboxes- хитбоксыygroup- группа (это Pygame объект) элементов, с которыми может столкнуться хитбокс.ifcollide- булевое значение на вывод из функции (по аналогии соspritecollise)
Я не проверял моё решение и тем более не знаю как выглядит ваш код, поэтому тут определённо требуется доработка. Более того решение костыльное, ибо сама идея простая, но есть очень много условностей в исполнении.