Ako môžem, aby sa moje pygame charakter animácie rovnakej veľkosti, ak niektoré z nich sú rôznych veľkostí, ako začať?

0

Otázka

V súčasnosti sa snažím kód v skoku animácie pre svoju hru. Podarilo získať skákanie animácie pracovať, ale obrázky sú na rôznej veľkosti na moje ďalšie animácie. Animácie sú všetky pokuty s výnimkou veľkosti. Mám znak bol som v pláne použiť z tohto odkaz.

Tu je môj kód pre nakladanie animácie:

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)

To je to, čo znak vyzerá, keď sa jumping v súčasnosti. To je to, čo znak vyzerá normálne.

Snažil som sa, aby zmena veľkosti skok obrázky samostatné do iných obrázkov, ale je to buď rovnakej veľkosti alebo oveľa väčšie.

Má niekto nejaké nápady, o čom je problém?

Vďaka za každú pomoc vopred :)

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

Najlepšiu odpoveď

0

Musíte použiť jeden škálovací faktor pre všetky snímky.

Definovať škálovací faktor (napr.: 0.5):

image_scale = 0.5

Napíšte funkciu, ktorá váhy obrázkov prostredníctvom škálovací faktor:

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

Použite funkciu a mierka ak chcete zmeniť veľkosť všetkých obrázkov. napríklad:

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

V iných jazykoch

Táto stránka je v iných jazykoch

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