Transparencias y uso de cromas en Pygame
Capítulo 8: Sprites y transparencias con croma
En este capítulo, te enseñaré a sustituir el sprite de forma geométrica del capítulo anterior por una imagen transparente.
Hasta el momento, la clase Jugador
está como puedes ver en el código de abajo.
class Jugador(pygame.sprite.Sprite)
# Sprite del jugador
def __init__(self):
# Heredamos el init de la clase Sprite de Pygame
super().__init__()
# Rectángulo (jugador)
self.image = pygame.Surface((200, 200))
self.image.fill(H_FA2F2F)
# Obtiene el rectángulo (sprite)
self.rect = self.image.get_rect()
# Centra el rectángulo (sprite)
self.rect.center = (ANCHO // 2, ALTO // 2)
def update(self):
# Actualiza esto cada vuelta de bucle.
self.rect.y += 10
if self.rect.top > ALTO:
self.rect.bottom = 0
Para sustituir el rectángulo del sprite por una imagen, tienes que hacerlo sustituyendo la línea de self.image = pygame.Surface((200, 200))
.
Lo haremos especificando una ruta de imagen.
También deberás eliminar la línea self.image.fill(H_FA2F2F)
:
self.image = pygame.image.load("ruta_de_imagen").convert()
# Esta línea elimínala:
self.image.fill(H_FA2F2F)
Recuerda que el .convert()
sirve para optimizar las imágenes en Pygame. Es opcional.
Con esto, ya se debería mostrar la imagen.
Para terminar con el capítulo veamos como hacer el efecto croma para eliminar los fondos de un mismo color en una imagen sin tener que procesarla con algún programa de edición gráfica.
La siguiente imagen tiene un chroma verde.
Podemos reemplazar este color por transparencia con un set_colorkey
.
self.image = pygame.image.set_colorkey(VERDE)
Me elimina todo lo que sea de color verde, ya que en mi paleta de colores, tengo el VERDE
especificado como: (rgb (R:0, G:255, B:0))
.
Esta técnica la puedes utilizar con cualquier color, en el vídeo sale como seleccionar el color específico con PyCharm.
Comentarios
Si te quedan dudas sobre el temario, sobre Python, Pygame o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.