Un contatore di frame
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 26 di 36.
Il personaggio cammina attraverso la finestra, ma le sue gambe non si muovono mai: mostra sempre frames[0]. Mostrare ogni volta l'altro fotogramma lo farebbe sfarfallare 60 volte al secondo, troppo velocemente per le gambe. Mantieni ogni immagine per alcuni fotogrammi, usando invece un contatore:
timer += 1
if timer == 10:
timer = 0
frame_index = (frame_index + 1) % len(frames)timer conta i fotogrammi. Ogni 10 fotogrammi riparte da 0 e frame_index passa all'immagine successiva. % len(frames) lo riporta a 0 dopo l'ultimo fotogramma, così la camminata si ripete all'infinito, qualunque sia il numero di fotogrammi nell'elenco.
Disegna frames[frame_index]. A 60 fotogrammi al secondo, ogni posa viene mostrata per un sesto di secondo: una camminata tranquilla. Un numero inferiore a 10 fa muovere le gambe più velocemente.
Sfida
Medio- Prima del ciclo, imposta
frame_index = 0etimer = 0. - A ogni fotogramma, aggiungi 1 a
timer; quando raggiunge 10, reimpostalo a 0 e passaframe_indexal fotogramma successivo, ricominciando da capo con% len(frames). - Disegna
frames[frame_index]in(x, 300).
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Walk Cycle")
clock = pygame.time.Clock()
sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()
frames = []
for col in (0, 1):
frame = sheet.subsurface((col * 24, 0, 24, 24))
frames.append(pygame.transform.scale_by(frame, 3))
x = 0
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
x += 2
if x > 640:
x = -72
screen.fill((20, 22, 40))
screen.blit(frames[0], (x, 300))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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