Menu
CoddyTech

Memotong Sprite Sheet

Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 25 dari 36.

Animasi adalah beberapa gambar yang ditampilkan satu demi satu. Game sering menyimpan gambar-gambar itu dalam satu file, sprite sheet: kisi berisi frame kecil yang disusun berdampingan. Program awal menampilkan seluruh gambar assets/sheets/platformer_characters.png, dengan 9 frame ke samping dan 3 ke bawah, masing-masing berukuran 24 kali 24 piksel. Dua pose berjalan karakter hijau adalah dua frame pertama di baris teratas.

sheet.subsurface(rect) memberimu bagian dari sprite sheet di dalam Rect, sebagai Surface tersendiri, tanpa menyalin satu piksel pun. Nomor frame col di baris row dimulai pada (col * 24, row * 24):

frames = []
for col in (0, 1):
    frame = sheet.subsurface((col * 24, 0, 24, 24))
    frames.append(pygame.transform.scale_by(frame, 3))

24 piksel terlalu kecil untuk jendela berukuran 640 kali 480, jadi setiap frame diperbesar 3 kali menjadi 72 kali 72. Pixel art yang diperbesar dengan bilangan bulat akan mempertahankan tepinya yang tajam. Potong dan perbesar sekali, sebelum perulangan, lalu simpan frame dalam list: pelajaran berikutnya akan memilih salah satunya berdasarkan indeksnya.

challenge icon

Tantangan

Sedang
  1. Sebelum perulangan, buat frames: frame pada kolom 0 dan 1 di baris teratas, masing-masing berukuran 24 kali 24 dan diperbesar 3 kali.
  2. Alih-alih seluruh sprite sheet, gambar frames[0] pada (200, 200) dan frames[1] pada (368, 200).

Coba sendiri

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sprite Sheet")
clock = pygame.time.Clock()

sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    screen.blit(sheet, (212, 204))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame