Как я могу сделать объект поверхности Pygame только из части загруженного изображения? - PullRequest
0 голосов
/ 21 марта 2020

Пиксельные коллизии из мультиспрайтового изображения

Я хочу сделать идеальные пиксельные коллизии. У меня есть спрайт с 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 Я хочу сравнить соответствующий кадр одного спрайта с соответствующим кадром другого , Я пытался создать маску для каждого кадра, а затем сохранить их в списке.

...