pygame.BLEND_RGBA_ADD
- это постоянное целое число, поэтому вы не можете передавать ему аргументы.Когда вы передаете его в качестве аргумента special_flags
в Surface.blit
или Surface.fill
, режим смешивания добавочный будет использоваться для заполнения / заполнения.Если вы хотите сделать свое изображение ярче, вы можете залить его не черным цветом и использовать 0 в качестве альфа-значения, чтобы альфа-канал не изменялся.(Нажмите A , чтобы увеличить яркость в этом примере.)
import pygame as py
py.init()
clock = py.time.Clock()
screen = py.display.set_mode((400, 700))
image = py.image.load('image.png').convert_alpha()
while True:
clock.tick(60)
for event in py.event.get():
if event.type == py.QUIT:
py.quit()
exit()
if event.type == py.KEYDOWN and event.key == py.K_a:
image.fill((100, 100, 100, 0), special_flags=py.BLEND_RGBA_ADD)
screen.fill((0,0,0))
screen.blit(image, (100,100))
py.display.flip()
Обратите внимание, что fill
поверхность изменяет исходную поверхность.Я думаю, что вы действительно хотите сделать, это поменять изображение на более яркую версию, когда объект получает повреждение.
Создайте яркую версию перед циклом while или загрузите другую версию изображения, а затем поменяйте местами, назначивтекущее изображение в другую переменную.(Между прочим, звоните convert()
или convert_alpha()
, чтобы значительно улучшить производительность блиц).
image = py.image.load('image.png').convert_alpha()
bright_image = image.copy()
bright_image.fill((100, 100, 100, 0), special_flags=py.BLEND_RGBA_ADD)
current_image = image # Assign the current image to another variable.
# In the main `while` loop.
# Swap the image when something happens.
current_image = bright_image
screen.blit(current_image, (100,100))