Comment blit / dessiner un sprite dans Pygame avec une opacité inférieure? [dupliquer]
J'essaye d'intégrer un peu de brouillard dans un jeu, mais j'ai rencontré un problème où j'ai réalisé que le brouillard est trop épais / opacité trop élevé. Je veux le blit avec une opacité encore plus faible, mais je ne sais pas trop comment et les tutoriels que j'ai trouvés en ligne ne fonctionnent pas / attendez déjà de vous que vous sachiez comment.
Juste au cas où vous vous demandez comment le code est écrit:
screen.blit(fog, (0, 0))
EDIT: J'utilise Python 3.8, juste au cas où cela compte
EDIT EDIT: J'utilise Pygame 2.0.0, juste au cas où cela compte aussi
Réponses
Vous ne blit avec une opacité inférieure, vous blit une surface qui a une opacité inférieure.
Utilisez surface.set_alpha()
pour modifier l'opacité du brouillard avant de le réduire.
Documents: https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha
De plus, si vous chargez dans votre brouillard à partir d'une image, assurez-vous de l'utiliser surface.convert_alpha()
, sinon il n'enregistrera pas la transparence dans le format d'image.
blit()fusionne en fait une surface sur la surface cible , en fonction du canal alpha de la surface . Tout ce que vous avez à faire est de changer le canal alpha du fog
. Utilisez set_alpha()pour définir la valeur alpha de l'image de surface complète:
Définissez la valeur alpha actuelle de la surface. Lors de la fusion de cette surface sur une destination, les pixels seront dessinés légèrement transparents. La valeur alpha est un entier compris entre 0 et 255, 0 est totalement transparent et 255 est totalement opaque.
Si vous souhaitez appliquer un brouillard transparent à 50%:
fog.set_alpha(127)
screen.blit(fog, (0, 0))