Obracaj względem oryginału
Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 9 z 36.
Kula z kolcami, która cały czas się obraca, wykonuje niewielki obrót w każdej klatce. Można ją zapisać w kuszący sposób, ale to nie zadziała:
ball = pygame.transform.rotate(ball, 2) # błędneW każdej klatce obracany jest obraz z poprzedniej klatki. Każdy obrót dodaje przezroczystą obwódkę, więc powierzchnia rośnie o około 3 procent w każdej klatce: po pół sekundy jest dwa razy większa, a po dwóch sekundach ma prawie 1800 pikseli szerokości. Piksele rozmazują się też trochę bardziej z każdym obrotem. Gra wkrótce zaczyna działać bardzo wolno.
Zamiast tego zachowaj oryginał i kąt, a obracany obraz twórz w każdej klatce na podstawie oryginału:
angle += 2
spun = pygame.transform.rotate(ball, angle)
screen.blit(spun, spun.get_rect(center=(320, 240)))Teraz spun jest oddalony o jeden obrót od pliku, niezależnie od kąta: nigdy nie przekracza rozmiaru 67 na 67 pikseli i nigdy nie jest bardziej rozmazany niż po jednym obrocie. Ta sama zasada dotyczy każdej transformacji: pracuj na oryginale, a nie na ostatniej kopii.
Wyzwanie
Średni- Przed pętlą ustaw
angle = 0. - W każdej klatce dodaj 2 do
angle. - Obróć oryginalny
balloanglei narysuj wynik tak, aby jego środek znajdował się w punkcie(320, 240). Nigdy nie zmieniaj samegoball.
Spróbuj swoich sił
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()
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Sprite’y i obrazy
1Wczytywanie obrazów
Wczytaj obrazUmieść go za pomocą RectPrzesuń obrazPowiel tłoPrzezroczyste piksele2Obracaj, odbijaj, skaluj
Obracaj wokół środkaKieruj się w stronę lotuSkaluj obrazObracaj względem oryginału5Kolizje z dokładnością do piksela
Prostokąty wydają się niesprawiedliweMaskiSprite’y z dokładnością do pikselaKołowe hitboxy6Animacja z arkuszy sprite’ów
Przytnij arkusz sprite’ówLicznik klatekAnimacja w czasieJednorazowa eksplozjaPoćwicz samodzielnie: Edytor online Pygame