Bazıları başlamak için farklı boyutlardaysa pygame karakter animasyonlarımı aynı boyutta nasıl yapabilirim?

0

Soru

Şu anda oyunum için bir atlama animasyonunda kodlamaya çalışıyorum. Atlama animasyonunu çalıştırmayı başardım ancak görüntüler diğer animasyonlarımdan farklı bir boyutta. Animasyonların boyutları hariç hepsi iyi. Kullanacağım karakteri bu linkten aldım.

İşte animasyonları yüklemek için kodum:

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)

Şu anda atlarken karakterin neye benzediği budur. Karakter normalde böyle görünür.

Atlama görüntülerinin boyutunu diğer görüntülere ayrı olarak değiştirmeye çalıştım, ancak aynı boyutta veya çok daha büyük.

Sorun kimse ne herhangi bir fikir var mı?

Şimdiden herhangi bir yardım için teşekkürler :)

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

En iyi cevabı

0

Tüm görüntüler için bir ölçeklendirme faktörü kullanmanız gerekir.

Bir ölçeklendirme faktörü tanımlayın (örneğin: 0,5):

image_scale = 0.5

Görüntüyü ölçekleme faktörüne göre ölçeklendiren bir işlev yazma:

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

Tüm görüntüleri ölçeklendirmek için işlevi ve ölçek faktörünü kullanın. örneğin:

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

Diğer dillerde

Bu sayfa diğer dillerde

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