Girar alrededor del centro
Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 6 de 36.
Una nave que gira necesita una imagen girada. pygame.transform.rotate(image, angle) te da una Surface nueva: la imagen girada angle grados en sentido antihorario. Un ángulo negativo la gira en sentido horario. La imagen original no cambia.
Un cuadrado girado no cabe en un cuadrado del mismo tamaño, así que la nueva Surface es más grande: la nave girada 45 grados mide 90 por 90 píxeles. Si la dibujas en la antigua esquina superior izquierda, su centro se desplaza hacia abajo y a la derecha; al girar, la nave se tambalea por la ventana.
Mantén el centro en el mismo lugar. Pídele a la imagen girada un Rect centrado en el mismo punto:
rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)Gira el ship original en el valor completo de angle en cada fotograma. La dirección de la nave es el número de angle, y la imagen se crea a partir de él.
Desafío
Intermedio- Antes del bucle, establece
angle = 0. - Mantener pulsada la tecla izquierda suma 3 a
angleen cada fotograma (en sentido antihorario); mantener pulsada la tecla derecha resta 3. - En cada fotograma, gira
shipsegúnangley dibuja el resultado con su centro en(320, 240).
Pruébalo tú mismo
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()
Todas las lecciones de Sprites e imágenes
1Cargar imágenes
Cargar una imagenColocarla con un rectánguloMover la imagenRepetir un fondo en mosaicoPíxeles transparentes2Girar, voltear y escalar
Girar alrededor del centroApuntar en la dirección del vueloEscalar una imagenGirar desde la imagen original5Colisiones precisas a nivel de píxel
Los rectángulos parecen injustosMáscarasSprites precisos a nivel de píxelHitboxes circulares3Clases para objetos del juego
Tu primera claseMétodosSelf es el objetoUna lista de objetosObjetos con imágenesUna subclase6Animación con hojas de sprites
Recortar una hoja de spritesUn contador de fotogramasAnimar con el tiempoUna explosión de una sola vezPractica por tu cuenta: Playground de Pygame