Putar dari Gambar Asli
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 9 dari 36.
Bola berduri yang terus berputar berubah sedikit setiap frame. Ada cara yang tampak menggoda untuk menulisnya, tetapi cara itu menyebabkan masalah:
ball = pygame.transform.rotate(ball, 2) # salahSetiap frame memutar gambar yang sudah diputar sebelumnya. Setiap rotasi menambahkan tepian tembus pandang, sehingga Surface membesar sekitar 3 persen setiap frame: ukurannya menjadi dua kali lipat setelah setengah detik, dan lebarnya hampir 1.800 piksel setelah dua detik. Pikselnya juga sedikit lebih buram setiap kali diputar. Game pun segera melambat hingga hampir tidak berjalan.
Simpan gambar asli dan sudutnya, lalu buat gambar yang diputar dari gambar asli pada setiap frame:
angle += 2
spun = pygame.transform.rotate(ball, angle)
screen.blit(spun, spun.get_rect(center=(320, 240)))Sekarang spun hanya berjarak satu rotasi dari file aslinya, berapa pun sudutnya: ukurannya tidak pernah lebih dari 67 kali 67 piksel dan tidak pernah lebih buram daripada setelah satu kali diputar. Aturan yang sama berlaku untuk setiap transformasi: gunakan gambar asli, bukan salinan terakhir.
Tantangan
Sedang- Sebelum perulangan, buat
angle = 0. - Setiap frame, tambahkan 2 ke
angle. - Putar
ballasli sebesarangledan gambar hasilnya dengan titik pusat di(320, 240). Jangan pernah mengubahballitu sendiri.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Spinning Spikes")
clock = pygame.time.Clock()
ball = pygame.image.load("assets/images/spike_ball.png").convert_alpha()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(ball, ball.get_rect(center=(320, 240)))
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