fill
Поверхность изменит ее, поэтому я рекомендую менять изображение на более яркую, когда объект получает повреждение.Создайте яркую версию перед циклом while или загрузите другую версию изображения, а затем поменяйте ее местами, назначив текущее изображение другой переменной.
Возможно, вам также нужен таймер, чтобы контролировать, насколько быстро изображение будет сброшено до исходной версии.
Я предлагаю вам сделать это в ваших классах спрайтов, а не в цикле while, как в приведенном ниже минимальном примере.
import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
image_normal = pg.Surface((30, 50))
image_normal.fill(pg.Color('dodgerblue'))
image_bright = image_normal.copy()
image_bright.fill((100, 100, 100, 0), special_flags=pg.BLEND_RGBA_ADD)
image = image_normal # The currently selected image.
timer = 0
dt = 0
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
elif event.type == pg.MOUSEBUTTONDOWN:
image = image_bright # Swap the image.
timer = .5 # 0.5 seconds.
timer -= dt
if timer <= 0:
image = image_normal # Set the image back to the normal version.
timer = 0
screen.fill(BG_COLOR)
screen.blit(image, (300, 200))
pg.display.flip()
dt = clock.tick(60) / 1000
pg.quit()