Bir Sprite Sheet'i Kesmek
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 25 / 36.
Animasyon, art arda gösterilen birkaç resimden oluşur. Oyunlar bu resimleri genellikle tek bir dosyada, sprite sheet adı verilen bir dosyada tutar: yan yana dizilmiş küçük karelerden oluşan bir ızgara. Başlangıç kodu assets/sheets/platformer_characters.png dosyasının tamamını çizer; yatayda 9, dikeyde 3 kare vardır ve her biri 24'e 24 pikseldir. Yeşil karakterin iki yürüme pozu, üst sıradaki ilk iki karededir.
sheet.subsurface(rect), bir Rect'in içindeki bölümü kendi Surface'i olarak verir ve hiçbir pikseli kopyalamaz. row satırındaki col numaralı kare (col * 24, row * 24) noktasında başlar:
frames = []
for col in (0, 1):
frame = sheet.subsurface((col * 24, 0, 24, 24))
frames.append(pygame.transform.scale_by(frame, 3))640'a 480 piksellik bir pencerede 24 piksel çok küçüktür; bu nedenle her kare, 72'ye 72 piksele ölçeklendirilmek üzere 3 ile büyütülür. Tam sayı katsayısıyla ölçeklenen piksel sanatı keskin kenarlarını korur. Kesme ve ölçeklendirme işlemlerini döngüden önce bir kez yapıp kareleri bir listede tut: sonraki derslerde bu karelerden biri dizin numarasıyla seçilecek.
Görev
Orta- Döngüden önce
framesdizisini oluştur: üst satırın 0 ve 1. sütunlarındaki kareler; her biri 24'e 24 boyutunda ve 3 kat büyütülmüş olsun. - Tüm görsel sayfası yerine
frames[0]öğesini(200, 200)konumunda,frames[1]öğesini de(368, 200)konumunda çiz.
Kendin dene
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()
Sprite'lar ve Görseller bölümündeki tüm dersler
4Sprite'lar ve Gruplar
Sprite SınıfıGruplarkill() ile Kaldırmaspritecollide ile YakalamaGruba Karşı Grup2Döndür, Yansıt, Ölçekle
Merkez Etrafında DöndürUçtuğun Yöne DönBir Görseli ÖlçekleOrijinalinden Döndür5Piksel Hassasiyetinde Çarpışmalar
Dikdörtgenler Haksız HissettiriyorMaskelerPiksel Hassasiyetinde Sprite'larDaire Hitbox'ları3Oyun Nesneleri için Sınıflar
İlk SınıfınızMetotlarSelf Nesnenin KendisidirNesneler ListesiGörselli NesnelerBir Alt Sınıf6Sprite Sheet'lerden Animasyon
Bir Sprite Sheet'i KesmekBir Kare SayacıZamanla AnimasyonTek Seferlik Bir PatlamaKendi başına pratik yap: Pygame playground