¿Cómo puedo hacer que mi pygame animaciones de los personajes del mismo tamaño si algunos de ellos son de diferentes tamaños para empezar?

0

Pregunta

En este momento estoy tratando de código en un salto de animación para mi juego. Me las he arreglado para conseguir el salto de animación de trabajo, pero las imágenes están en un tamaño diferente al del resto de mis animaciones. Las animaciones están todos bien, excepto por el tamaño. Tengo el personaje que iba a utilizar a partir de este enlace.

Aquí está mi código para cargar las animaciones:

player_size = (80, 80)
for n in range(0, 10):
    img_right = pygame.image.load(f'img/Character animations/Jump Start/Jump Start_{n}.png').convert_alpha()
    img_right = pygame.transform.smoothscale(img_right, player_size)
    img_left = pygame.transform.flip(img_right, True, False)
    self.images_jump_start_right.append(img_right)
    self.images_jump_start_left.append(img_left)
for n in range(0, 12):
    img_right = pygame.image.load(f'img/Character animations/Idle/Idle_{n}.png').convert_alpha()
    img_right = pygame.transform.smoothscale(img_right, player_size)
    img_left = pygame.transform.flip(img_right, True, False)
    self.images_idle_right.append(img_right)
    self.images_idle_left.append(img_left)
for n in range(0, 16):
    img_right = pygame.image.load(f'img/Character animations/Walk/Walk_{n}.png').convert_alpha()
    img_right = pygame.transform.smoothscale(img_right, player_size)
    img_left = pygame.transform.flip(img_right, True, False)
    self.images_run_right.append(img_right)
    self.images_walk_left.append(img_left)

Esto es lo que el personaje se parece al saltar en el momento. Esto es lo que el personaje ve como normalmente.

He intentado cambiar el tamaño de el salto las imágenes separadas de las otras imágenes, pero es del mismo tamaño o más grande.

¿Alguien tiene alguna idea sobre cuál es el problema?

Gracias por la ayuda de antemano :)

animation drawing pygame python
2021-11-23 21:20:04
1

Mejor respuesta

0

Se debe utilizar un factor de escala para todas las imágenes.

Definir un factor de escala (por ejemplo: de 0,5):

image_scale = 0.5

Escribir una función que escala una imagen por un factor de escala:

def scale_surface(surf, scale):
    width = round(surf.get_width() * scale)
    height = round(surf.get_height() * scale)
    return pygame.transform.smoothscale(surf, (width, height))

Utilice la función y el factor de escala a escala de todas las imágenes. por ejemplo:

img_right = scale_surface(img_right, image_scale)
2021-11-23 21:28:58

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................