Licznik klatek
Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 26 z 36.
Postać przechodzi przez okno, ale jej nogi się nie poruszają: zawsze wyświetla frames[0]. Wyświetlanie za każdym razem innej klatki powodowałoby migotanie 60 razy na sekundę — zdecydowanie za szybko, by pokazać ruch nóg. Zamiast tego wyświetlaj każdy obraz przez kilka klatek, używając licznika:
timer += 1
if timer == 10:
timer = 0
frame_index = (frame_index + 1) % len(frames)timer liczy klatki. Co 10 klatek zaczyna od nowa od 0, a frame_index przechodzi do następnego obrazu. % len(frames) zawija indeks z powrotem do 0 po ostatnim obrazie, dzięki czemu chód zapętla się bez końca, niezależnie od liczby klatek na liście.
Rysuj frames[frame_index]. Przy 60 klatkach na sekundę każda poza jest wyświetlana przez jedną szóstą sekundy: to spokojny chód. Mniejsza liczba niż 10 sprawia, że nogi poruszają się szybciej.
Wyzwanie
Średni- Przed pętlą ustaw
frame_index = 0itimer = 0. - W każdej klatce dodaj 1 do
timer; gdy osiągnie 10, ustaw ją ponownie na 0 i przejdź do następnej klatki za pomocąframe_index, zawijając indeks z użyciem% len(frames). - Narysuj
frames[frame_index]w pozycji(x, 300).
Spróbuj swoich sił
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()
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Sprite’y i obrazy
1Wczytywanie obrazów
Wczytaj obrazUmieść go za pomocą RectPrzesuń obrazPowiel tłoPrzezroczyste piksele2Obracaj, odbijaj, skaluj
Obracaj wokół środkaKieruj się w stronę lotuSkaluj obrazObracaj względem oryginału5Kolizje z dokładnością do piksela
Prostokąty wydają się niesprawiedliweMaskiSprite’y z dokładnością do pikselaKołowe hitboxy6Animacja z arkuszy sprite’ów
Przytnij arkusz sprite’ówLicznik klatekAnimacja w czasieJednorazowa eksplozjaPoćwicz samodzielnie: Edytor online Pygame