Ruotare attorno al centro
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 6 di 36.
A una nave che ruota serve un'immagine ruotata. pygame.transform.rotate(image, angle) ti restituisce una nuova Surface: l'immagine ruotata di angle gradi in senso antiorario. Un angolo negativo la ruota in senso orario. L'immagine originale non cambia.
Un quadrato ruotato non entra in un quadrato delle stesse dimensioni, quindi la nuova Surface è più grande: la nave ruotata di 45 gradi misura 90 per 90 pixel. Se la disegni con blit nel vecchio angolo in alto a sinistra, il suo centro si sposta verso il basso e a destra; la rotazione fa oscillare la nave nella finestra.
Mantieni invece il centro dov'era. Chiedi all'immagine ruotata un Rect centrato sullo stesso punto:
rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)Ruota l'originale ship di tutto l'angle a ogni fotogramma. La direzione della nave è il numero in angle e l'immagine viene creata a partire da esso.
Sfida
Medio- Prima del ciclo, imposta
angle = 0. - Tenendo premuto Left, aggiungi 3 a
anglea ogni fotogramma (in senso antiorario); tenendo premuto Right, sottrai 3. - A ogni fotogramma, ruota
shipdianglee disegna il risultato con il centro in(320, 240).
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Turn the Ship")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(center=(320, 240))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(ship, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tutte le lezioni di Sprite e immagini
1Caricare immagini
Caricare un'immaginePosizionarla con un rettangoloSpostare l'immagineRipetere uno sfondoPixel trasparenti2Ruota, capovolgi, ridimensiona
Ruotare attorno al centroRivolgiti nella direzione in cui voliRidimensionare un'immagineRuotare dall'originale3Classi per gli oggetti del gioco
La tua prima classeMetodiSelf è l’oggettoUna lista di oggettiOggetti con immaginiUna sottoclasse6Animazione con gli sprite sheet
Ritagliare uno sprite sheetUn contatore di frameAnimare con il tempoUn’esplosione a riproduzione singolaEsercitati da solo: Playground Pygame