2016-01-25 8 views
2

В настоящее время я делаю игру, в которой я загружаю спрайты и фоны из изображений (PNG) с помощью функции pygame.image.load().Blitting непрямоугольные спрайты с Pygame, Python 3

Моя проблема заключается в том, что не все мои спрайты прямоугольные - и из-за этого они оставляют уродливое белое пространство на заднем плане, на котором я их использовал. На изображении ниже белый является частью спрайта корабля, однако я бы хотел, чтобы он сливался с фоном.

enter image description here

Есть простой способ решить эту проблему? Заранее благодарю за любую помощь.

+0

Вы уверены, что само изображение корабля является прозрачным? Мне удалось загрузить прозрачные .pngs просто отлично. Кроме того, какое программное обеспечение вы использовали для создания этого изображения? – ASCIIThenANSI

+0

Я использовал mspaint ... –

ответ

2

Если изображение имеет прозрачный фон (некоторые пиксели прозрачными) (PNG), то вы должны использовать convert_alpha()

image = pygame.image.load(filename).convert_alpha() 

Если изображение не имеет прозрачный фон (GIF, JPG), то вы можете использовать set_colorkey() и Pygame будет обработать выбранный цвет как прозрачный.

image = pygame.image.load(filename).set_colorkey(color) 

Многие спрайты изображения используют розовый в качестве ключевого цвета

enter image description here

+0

Я попытался использовать convert_alpha(), но это не имело никакого значения. Может быть, потому, что я сделал это на mspaint? –

+0

Вы должны использовать PNG с прозрачными пикселями. Если вы видите белый фон с помощью средства просмотра изображений, то у вас нет прозрачного фона, а 'convert_alpha()' не будет работать. И тогда вы можете использовать 'set_colorkey (WHITE)' (где 'WHITE = (255,255,255)') – furas

+0

Хорошо, спасибо ... но как я могу сделать изображение с прозрачными пикселями прямо в mspaint или какое-то другое программное обеспечение? –

Смежные вопросы