Como você blit / desenha um sprite no Pygame com menor opacidade? [duplicado]
Estou tentando transformar um pouco de névoa em um jogo, mas me deparei com um problema em que percebi que a névoa é muito densa / opaca para muito alta. Quero blitá-lo com uma opacidade ainda menor, mas não tenho certeza de como e os tutoriais que encontrei online não funcionam / já espero que você saiba.
Caso você esteja se perguntando como o código foi escrito:
screen.blit(fog, (0, 0))
EDIT: Estou usando Python 3.8, apenas no caso de isso importar
EDITAR EDITAR: Estou usando o Pygame 2.0.0, apenas no caso de isso também importar
Respostas
Você não faz o blit com opacidade inferior, mas sim uma superfície com opacidade inferior.
Use surface.set_alpha()
para alterar a opacidade da névoa antes de apagá-la.
Docs: https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha
Além disso, se você estiver carregando no seu nevoeiro a partir de uma imagem, certifique-se de usar surface.convert_alpha()
nela, ou então não registrará a transparência no formato da imagem.
blit()na verdade, combina uma superfície com a superfície de destino , dependendo do canal alfa da superfície . Tudo que você precisa fazer é alterar o canal alfa do fog
. Use set_alpha()para definir o valor alfa para toda a imagem da superfície:
Defina o valor alfa atual para a superfície. Ao blitting esta Surface em um destino, os pixels serão desenhados ligeiramente transparentes. O valor alfa é um número inteiro de 0 a 255, 0 é totalmente transparente e 255 é totalmente opaco.
Se você deseja aplicar uma névoa transparente de 50%:
fog.set_alpha(127)
screen.blit(fog, (0, 0))