Как мне сделать анимацию персонажей pygame одинакового размера, если некоторые из них для начала имеют разные размеры?

0

Вопрос

В данный момент я пытаюсь закодировать анимацию прыжка для своей игры. Мне удалось заставить анимацию прыжков работать, но изображения имеют размер, отличный от других моих анимаций. Все анимации в порядке, за исключением размеров. Я получил персонажа, которого собирался использовать, по этой ссылке.

Вот мой код для загрузки анимации:

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)

Вот как выглядит персонаж при прыжке в данный момент. Это то, как обычно выглядит персонаж.

Я попытался изменить размер отдельных изображений перехода на другие изображения, но они либо того же размера, либо намного больше.

У кого-нибудь есть какие-нибудь идеи о том, в чем проблема?

Заранее спасибо за любую помощь :)

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

Лучший ответ

0

Вы должны использовать один коэффициент масштабирования для всех изображений.

Определите коэффициент масштабирования (например: 0,5):

image_scale = 0.5

Напишите функцию, которая масштабирует изображение с помощью коэффициента масштабирования:

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

Используйте функцию и коэффициент масштабирования для масштабирования всех изображений. например:

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

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................