Ritagliare uno sprite sheet
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 25 di 36.
L'animazione è composta da alcune immagini mostrate una dopo l'altra. Spesso i giochi raccolgono queste immagini in un unico file, uno sprite sheet: una griglia di piccoli fotogrammi affiancati. Il codice iniziale disegna per intero assets/sheets/platformer_characters.png, con 9 fotogrammi in orizzontale e 3 in verticale, ciascuno di 24 per 24 pixel. Le due pose di camminata del personaggio verde sono le prime due nella riga in alto.
sheet.subsurface(rect) ti restituisce la parte del foglio contenuta in un Rect, sotto forma di una Surface a sé stante, senza copiare alcun pixel. Il fotogramma numero col nella riga row inizia in (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 pixel sono pochi su una finestra di 640 per 480, quindi ogni fotogramma viene ingrandito di 3 volte, fino a 72 per 72. La pixel art ingrandita di un numero intero mantiene i bordi nitidi. Ritaglia e ingrandisci una sola volta, prima del ciclo, e conserva i fotogrammi in una lista: nelle lezioni successive ne sceglierai uno in base al suo indice.
Sfida
Medio- Prima del ciclo, crea
frames: i fotogrammi nelle colonne 0 e 1 della riga superiore, ciascuno di 24 per 24, ingranditi di un fattore 3. - Invece dell’intero foglio, disegna
frames[0]in(200, 200)eframes[1]in(368, 200).
Provalo tu
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()
Tutte le lezioni di Sprite e immagini
1Caricare immagini
Caricare un'immaginePosizionarla con un rettangoloSpostare l'immagineRipetere uno sfondoPixel trasparenti2Ruota, capovolgi, ridimensiona
Ruotare attorno al centroRivolgiti nella direzione in cui voliRidimensionare un'immagineRuotare dall'originale3Classi per gli oggetti del gioco
La tua prima classeMetodiSelf è l’oggettoUna lista di oggettiOggetti con immaginiUna sottoclasse6Animazione con gli sprite sheet
Ritagliare uno sprite sheetUn contatore di frameAnimare con il tempoUn’esplosione a riproduzione singolaEsercitati da solo: Playground Pygame