Piksel per Detik
Termasuk bagian Perulangan Game dalam perjalanan Pygame di Coddy. Pelajaran 19 dari 32.
Kecepatan 4 piksel per frame setara dengan 240 piksel per detik hanya pada 60 frame per detik. Pada 30 frame per detik, game yang sama berjalan dengan kecepatan setengahnya. Gunakan kecepatan dalam piksel per detik, lalu kalikan dengan dt untuk mendapatkan langkah pada frame ini:
speed = 200
if keys[pygame.K_RIGHT]:
x += speed * dtPada 60 frame per detik, dt sekitar 0.017 dan bola bergerak sekitar 3.4 piksel per frame. Pada 30 frame per detik, dt sekitar 0.033 dan bola bergerak sekitar 6.7 piksel: dua kali lebih jauh per frame, dengan jarak yang sama, yaitu 200 piksel per detik.
Posisi menjadi angka desimal seperti 243.4. Itu tidak masalah: pygame menerima posisi desimal dan menggambar pada piksel utuh.
Tantangan
Mudah- Sebelum perulangan, tetapkan
speed = 200. - Buat setiap tombol panah menggerakkan bola sejauh
speed * dt, bukan 4.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Pixels per Second")
clock = pygame.time.Clock()
x, y = 240, 180
dt = 0
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= 4
if keys[pygame.K_RIGHT]:
x += 4
if keys[pygame.K_UP]:
y -= 4
if keys[pygame.K_DOWN]:
y += 4
screen.fill((30, 30, 46))
pygame.draw.circle(screen, (255, 196, 0), (x, y), 16)
pygame.display.flip()
dt = clock.tick(60) / 1000
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