Menganimasikan dengan Waktu
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 27 dari 36.
Penghitung frame mengaitkan animasi dengan laju frame. Pada komputer yang hanya mampu menangani 30 frame per detik, sayap serangga mengepak dengan kecepatan setengahnya. Kaitkan animasi dengan waktu.
pygame.time.get_ticks() adalah jumlah milidetik sejak pygame.init(). Bagi dengan durasi setiap gambar, dan kamu akan mendapatkan jumlah gambar yang telah berlalu; % mengubahnya menjadi indeks:
frame_index = pygame.time.get_ticks() // 120 % len(frames)Dari 0 hingga 119 ms, hasilnya adalah gambar 0, dari 120 hingga 239 ms gambar 1, lalu 2, kemudian kembali ke 0. Kamu tidak perlu menyimpan dan mengatur ulang penghitung: satu baris, dihitung ulang setiap frame. Jika game melambat, animasi akan melewati satu gambar alih-alih ikut melambat.
// membagi lalu membuang sisanya: 250 // 120 hasilnya 2. Baris ketiga sprite sheet ini menampilkan serangga terbang dalam tiga pose, pada kolom 6 hingga 8, yang sudah dipotong menjadi frames.
Tantangan
Sedang- Hapus
timerdan penghitungnya. - Pada setiap frame, atur
frame_indexdaripygame.time.get_ticks()agar setiap dari tiga gambar ditampilkan selama 120 milidetik, secara berurutan.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Flying Bug")
clock = pygame.time.Clock()
sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()
frames = []
for col in (6, 7, 8):
frame = sheet.subsurface((col * 24, 48, 24, 24))
frames.append(pygame.transform.scale_by(frame, 3))
frame_index = 0
timer = 0
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
timer += 1
if timer == 10:
timer = 0
frame_index = (frame_index + 1) % len(frames)
screen.fill((20, 22, 40))
image = frames[frame_index]
screen.blit(image, image.get_rect(center=(320, 240)))
pygame.display.flip()
clock.tick(60)
pygame.quit()
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