Пиксельные коллизии из мультиспрайтового изображения
Я хочу сделать идеальные пиксельные коллизии. У меня есть спрайт с 6 кадрами в формате PNG с прозрачным фоном, но все они в одной таблице спрайтов. (У «вражеских» спрайтов по 2 кадра в каждом.) Я могу анимировать их и переместить их в порядке.
Как я могу сделать объект поверхности пигра только из части загруженного изображения? Я полагаю, что мог бы загрузить каждый кадр спрайта индивидуально, но это трудоемко и не похоже на хорошее кодирование.
Подробнее
Я могу превратить всю таблицу спрайтов в маску достаточно легко выполнить следующим образом (первоначально в классе spritesheet, но здесь он упрощен):
# Load image
sheet = pygame.image.load("spritesheet.png")
# Create mask
sheet_mask = pygame.mask.from_surface(sheet)
Я мог бы просто использовать прямоугольник текущего кадра для обнаружения коллизий, но это будет очень неудовлетворительно, поскольку коллизии могут показаться иногда случаться без контакта. У пигмеев есть этот замечательный объект маски для такого рода вещей.
В каждом l oop основной игры l oop Я хочу сравнить соответствующий кадр одного спрайта с соответствующим кадром другого , Я пытался создать маску для каждого кадра, а затем сохранить их в списке.