Un contador de fotogramas
Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 26 de 36.
El personaje camina por la ventana, pero sus piernas nunca se mueven: siempre muestra frames[0]. Mostrar el otro fotograma cada vez produciría un parpadeo 60 veces por segundo, demasiado rápido para las piernas. Mantén cada imagen durante unos cuantos fotogramas, usando un contador:
timer += 1
if timer == 10:
timer = 0
frame_index = (frame_index + 1) % len(frames)timer cuenta los fotogramas. Cada 10 fotogramas vuelve a empezar en 0 y frame_index avanza a la siguiente imagen. % len(frames) lo devuelve a 0 después de la última imagen, así que el ciclo de caminata se repite para siempre, sin importar cuántos fotogramas haya en la lista.
Dibuja frames[frame_index]. A 60 fotogramas por segundo, cada pose se muestra durante una sexta parte de un segundo: una caminata tranquila. Un número menor que 10 hace que las piernas se muevan más rápido.
Desafío
Intermedio- Antes del bucle, establece
frame_index = 0ytimer = 0. - En cada fotograma, suma 1 a
timer; cuando llegue a 10, vuelve a establecerlo en 0 y avanzaframe_indexal siguiente fotograma, volviendo al inicio con% len(frames). - Dibuja
frames[frame_index]en(x, 300).
Pruébalo tú mismo
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()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Sprites e imágenes
1Cargar imágenes
Cargar una imagenColocarla con un rectánguloMover la imagenRepetir un fondo en mosaicoPíxeles transparentes2Girar, voltear y escalar
Girar alrededor del centroApuntar en la dirección del vueloEscalar una imagenGirar desde la imagen original5Colisiones precisas a nivel de píxel
Los rectángulos parecen injustosMáscarasSprites precisos a nivel de píxelHitboxes circulares3Clases para objetos del juego
Tu primera claseMétodosSelf es el objetoUna lista de objetosObjetos con imágenesUna subclase6Animación con hojas de sprites
Recortar una hoja de spritesUn contador de fotogramasAnimar con el tiempoUna explosión de una sola vezPractica por tu cuenta: Playground de Pygame