Jak zrobić animację postaci pygame tej samej wielkości, jeśli niektóre z nich, aby rozpocząć mają różne wymiary.

0

Pytanie

W tej chwili staram się zakodować animację skoku do swojej gry. Udało mi się zmusić animacje skoków pracować, ale zdjęcia mają rozmiar, inny od innych moich animacji. Wszystkie animacje w porządku, za wyjątkiem wielkości. Mam postać, którą zamierza wykorzystać w tym linku.

Oto mój kod do pobrania animacje:

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)

Oto jak wygląda postać w skoku w tej chwili. To jest to, jak zazwyczaj wygląda postać.

Próbowałem zmienić rozmiar pojedynczych obrazów przejścia na inne zdjęcia, ale albo są tego samego rozmiaru, albo o wiele więcej.

Czy ktoś ma jakieś pomysły o tym, w czym problem?

Z góry dziękuję za każdą pomoc :)

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

Najlepsza odpowiedź

0

Musisz użyć jeden współczynnik skalowania dla wszystkich obrazów.

Określ współczynnik skalowania (np.: 0,5):

image_scale = 0.5

Napisz funkcję, która skaluje obraz za pomocą współczynnika skalowania:

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

Użyj funkcji i współczynnik skalowania dla powiększenia wszystkich obrazów. na przykład:

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

W innych językach

Ta strona jest w innych językach

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