Apuntar en la dirección del vuelo
Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 7 de 36.
La nave apunta hacia arriba en su archivo. Al girarla con rotate(ship, -90), apunta hacia la derecha, lo que resulta adecuado para una nave que vuela de lado. Cuando vuela hacia la izquierda, debería apuntar hacia la izquierda.
pygame.transform.flip(image, flip_x, flip_y) te da una copia reflejada. True, False la refleja de izquierda a derecha; False, True la refleja de arriba abajo.
ship_right = pygame.transform.rotate(ship, -90)
ship_left = pygame.transform.flip(ship_right, True, False)Ambas imágenes se crean una sola vez, antes del bucle. Después, el juego recuerda cuál debe mostrar en una variable, y las teclas la cambian:
if keys[pygame.K_LEFT]:
ship_rect.x -= 5
image = ship_leftDibuja image en cada fotograma. Cuando no se mantiene pulsada ninguna tecla, image conserva su último valor, así que la nave sigue mirando hacia la dirección en la que voló por última vez.
Desafío
Intermedio- Antes del bucle, crea
ship_left:ship_rightvolteado de izquierda a derecha. - Antes del bucle, establece
image = ship_right. - Al mantener pulsada la tecla izquierda, se establece
image = ship_left; al mantener pulsada la tecla derecha, se estableceimage = ship_right. El movimiento permanece igual. - Dibuja
imageenship_rect.
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Face the Way You Fly")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_right = pygame.transform.rotate(ship, -90)
ship_rect = ship_right.get_rect(center=(320, 240))
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]:
ship_rect.x -= 5
if keys[pygame.K_RIGHT]:
ship_rect.x += 5
ship_rect.clamp_ip(screen.get_rect())
screen.fill((20, 22, 40))
screen.blit(ship_right, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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