Como faço para o meu pygame animações de personagem o mesmo tamanho, se alguns deles são de tamanhos diferentes para começar?

0

Pergunta

No momento eu estou tentando código em um salto de animação para o meu jogo. Eu já consegui o salto de animação funcionando, mas as imagens estão em um tamanho diferente para minhas outras animações. As animações são todas bem, exceto para os tamanhos. Eu tenho o personagem que eu estava indo para usar a partir deste link.

Aqui é o meu código para carregar as animações:

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)

Isto é o que o personagem parece ser quando saltar no momento. Isto é o que o personagem parece ser normalmente.

Eu tentei alterar o tamanho do salto imagens separadas para as outras imagens, mas é do mesmo tamanho ou maior.

Alguém tem alguma idéia de qual é o problema?

Obrigado por qualquer ajuda antecipadamente :)

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

Melhor resposta

0

Deve-se usar um fator de escala para todas as imagens.

Definir um fator de escala (por exemplo: 0.5):

image_scale = 0.5

Escreva uma função que dimensiona uma imagem por um fator 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))

Use a função e o fator de escala a escala de todas as imagens. por exemplo:

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

Em outros idiomas

Esta página está em outros idiomas

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