因此,我正在嘗試編寫一個函數,該函數生成一個表面,該表面可堆疊兩個我繪製的PNG,並且可以在其中顯示一個孔,以便其他人可以顯示。解決方法在PyGame中混合每個字母和顏色鍵
我有一個太空船外部的繪圖。我也有一個相同的宇宙飛船的內部繪圖。 (self.baseImage)
我也有傷害的繪圖。 (pygame.image.load('Damage1.png'))
損壞圖形是一個png,邊緣上的像素alpha透明度越來越不透明,黃色和橙色朝向中心,中間是紫色。 ('#770777')
這個想法是將傷害噴射到飛船外部。它看起來像有人在一艘充滿紫色的太空船上打了個洞。該部分起作用。然後,我想爲該紫色設置一個顏色鍵,並將整個內容粘貼到內部圖紙上,以便代替紫色,您會看到裏面的內容。
這是我的嘗試。它在每次施加新傷害時都會運行,並且大多數情況下都能正常工作,但紫色不會轉換。
def generateImage(self):
self.buildImage = self.origImage.copy()
for x in range(len(self.objectSquares)):
for y in range(len(self.objectSquares[x])):
if self.objectSquares[x][y].health < 10:
self.buildImage.blit(pygame.image.load('Damage1.png'), ((x*10), (y*10)))
self.buildImage = self.buildImage.convert()
self.buildImage.set_colorkey(pygame.Color('#770777'))
self.compImage = pygame.Surface(self.buildImage.get_size()).convert()
self.compImage.blit(self.baseImage, (0, 0))
self.compImage.blit(self.buildImage, (0, 0))
我也試着從損壞繪圖抓住colorkey爲確保這不是我的畫圖程序壓縮圖像或東西。
self.buildImage.set_colorkey(pygame.image.load('Damage1.png').convert().get_at((5, 5)))
和
self.buildImage.set_colorkey(pygame.image.load('Damage1.png').get_at((5, 5)))
和其他各種組合。
有沒有人看到我在做什麼錯了?我會很感激幫助!
你應該嘗試在不同的位置保存到磁盤上的各種圖像,並檢查他們使用普通的圖像編輯器,看看是否透明度是正確的,如果紫色真的是'#770777'(也許它會略有不同因爲alpha級別不是100%不透明)。 –
您是否嘗試過使用'convert_alpha()'而不是'convert()'? – Haz