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.
Tantangan
Sedang- Sebelum perulangan, buat
frames: frame pada kolom 0 dan 1 di baris teratas, masing-masing berukuran 24 kali 24 dan diperbesar 3 kali. - Alih-alih seluruh sprite sheet, gambar
frames[0]pada(200, 200)danframes[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
2Putar, Cerminkan, Ubah Skala
Putar Mengelilingi Titik TengahHadap ke Arah TerbangmuUbah Skala GambarPutar dari Gambar Asli3class untuk object game
class pertamamumethodself adalah objectlist berisi objectobject dengan gambarsubclass6Animasi dari Sprite Sheet
Memotong Sprite SheetPenghitung FrameMenganimasikan dengan WaktuLedakan Sekali JalanLatihan sendiri: Playground Pygame