Cum pot face meu pygame animații de caractere de aceeași dimensiune, dacă unele dintre ele sunt de diferite dimensiuni pentru a începe cu?

0

Problema

În momentul de față am încercat să-cod într-un salt de animație pentru jocul meu. Am reușit să ajung la sărituri animație de lucru, dar imaginile sunt de la o dimensiune diferită de a mea de alte animații. Animațiile sunt bine, cu excepția dimensiuni. Am primit personajul pe care îl va folosi la acest link.

Aici este codul meu pentru încărcarea animații:

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)

Aceasta este ceea ce personaj se pare că atunci când sărind în momentul de față. Aceasta este ceea ce personajul arată în mod normal.

Am încercat pentru a modifica dimensiunea de salt imagini separate pentru alte imagini, dar aceasta este fie de aceeași dimensiune sau mai mare.

Are cineva vreo idee care este problema?

Multumesc pentru orice ajutor în avans :)

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

Cel mai bun răspuns

0

Trebuie să utilizați un factor de scalare pentru toate imaginile.

Defini un factor de scalare (de exemplu: 0.5):

image_scale = 0.5

Scrie o funcție care scalează o imagine de un factor de scalare:

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

Utilizați funcția și factor de scară la scară toate imaginile. de exemplu:

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

În alte limbi

Această pagină este în alte limbi

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