Delta Waktu
Termasuk bagian Perulangan Game dalam perjalanan Pygame di Coddy. Pelajaran 18 dari 32.
clock.tick(60) melakukan lebih dari sekadar menunggu. Fungsi ini mengembalikan jumlah milidetik yang berlalu sejak pemanggilan sebelumnya: sekitar 17 pada 60 frame per detik, lebih lama pada komputer lambat yang tertinggal. Bagi dengan 1000, maka kamu mendapatkan dt, durasi satu frame dalam detik:
dt = 0
while running:
# peristiwa, update, draw, flip
dt = clock.tick(60) / 1000dt bernilai 0 pada frame pertama dan berisi durasi frame terakhir setelahnya. Jumlahkan, maka kamu mendapatkan waktu sejak game dimulai:
elapsed += dtMenghitung frame, seperti yang dilakukan Gem Hunt, hanya mengukur waktu saat game berjalan dengan kecepatan penuh 60 frame per detik. Waktu yang diukur dengan dt akurat di komputer mana pun. Bagian selanjutnya dalam bab ini menggerakkan berbagai hal berdasarkan waktu.
Tantangan
MudahSumbu menyala 1 piksel setiap frame. Buat sumbu menyala berdasarkan waktu:
- Sebelum perulangan, tetapkan
elapsed = 0dandt = 0. - Ganti
clock.tick(60)dengandt = clock.tick(60) / 1000. - Dalam perulangan, tambahkan
dtkeelapsed, lalu tetapkan lebar sumbu kemax(0, 480 - elapsed * 40), sehingga sumbu menyala sepanjang 40 piksel per detik.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Fuse")
clock = pygame.time.Clock()
width = 480
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
width = max(0, width - 1)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (255, 150, 40), (0, 170, width, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Semua pelajaran di Perulangan Game
1Gerakkan Persegi
Buka JendelaIsi Latar Belakang4Bergerak Berdasarkan Waktu
Delta WaktuPiksel per DetikVector2Percepatan dan GesekanBerputar Kembali di LayarLatihan sendiri: Playground Pygame