Penghitung Frame
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 26 dari 36.
Karakter berjalan melintasi jendela, tetapi kakinya tidak pernah bergerak: karakter itu selalu menampilkan frames[0]. Menampilkan frame lainnya setiap kali akan membuatnya berkedip 60 kali per detik, terlalu cepat untuk kaki. Tahan setiap gambar selama beberapa frame, dengan sebuah penghitung:
timer += 1
if timer == 10:
timer = 0
frame_index = (frame_index + 1) % len(frames)timer menghitung frame. Setiap 10 frame, penghitung dimulai lagi dari 0 dan frame_index beralih ke gambar berikutnya. % len(frames) mengembalikannya ke 0 setelah gambar terakhir, sehingga gerakan berjalan berulang tanpa henti, berapa pun jumlah frame dalam list.
Gambar frames[frame_index]. Pada 60 frame per detik, setiap pose ditampilkan selama seperenam detik: gerakan berjalan yang tenang. Angka yang lebih kecil dari 10 membuat kaki bergerak lebih cepat.
Tantangan
Sedang- Sebelum perulangan, buat
frame_index = 0dantimer = 0. - Pada setiap frame, tambahkan 1 ke
timer; saat nilainya mencapai 10, atur kembali ke 0 dan pindahkanframe_indexke frame berikutnya, dengan kembali ke awal menggunakan% len(frames). - Gambar
frames[frame_index]di(x, 300).
Coba sendiri
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()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Sprite dan Gambar
2Putar, Cerminkan, Ubah Skala
Putar Mengelilingi Titik TengahHadap ke Arah TerbangmuUbah Skala GambarPutar dari Gambar Asli3class untuk object game
class pertamamumethodself adalah objectlist berisi objectobject dengan gambarsubclass6Animasi dari Sprite Sheet
Memotong Sprite SheetPenghitung FrameMenganimasikan dengan WaktuLedakan Sekali JalanLatihan sendiri: Playground Pygame