Quay mặt theo hướng bay
Thuộc phần Sprite và hình ảnh trong hành trình Pygame của Coddy. Bài học 7 trên 39.
Tàu hướng lên trong tệp ảnh. Khi xoay bằng rotate(ship, -90), tàu sẽ hướng sang phải, phù hợp với hướng bay ngang. Khi bay sang trái, tàu nên hướng sang trái.
pygame.transform.flip(image, flip_x, flip_y) tạo một bản sao lật gương. True, False lật từ trái sang phải; False, True lật từ trên xuống dưới.
ship_right = pygame.transform.rotate(ship, -90)
ship_left = pygame.transform.flip(ship_right, True, False)Cả hai hình đều được tạo một lần, trước vòng lặp. Sau đó, trò chơi lưu hình cần hiển thị vào một biến, và các phím sẽ thay đổi biến đó:
if keys[pygame.K_LEFT]:
ship_rect.x -= 5
image = ship_leftVẽ image ở mỗi khung hình. Khi không có phím nào được nhấn, image giữ nguyên giá trị gần nhất, nên tàu tiếp tục hướng về phía nó đã bay lần cuối.
Thử thách
Trung bìnhCho tàu quay về hướng nó bay.
- Trước vòng lặp, tạo
ship_leftbằng cách lậtship_righttheo chiều ngang, rồi đặtimage = ship_right. - Giữ phím mũi tên trái thì đặt
image = ship_left; giữ phím mũi tên phải thì đặtimage = ship_right. - Vẽ
imagetạiship_rect.
Nhấn Chơi và bay sang trái: tàu quay mặt sang trái. Sau đó nhấn Kiểm tra.
Tự làm thử
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()
Tất cả bài học trong Sprite và hình ảnh
5Va chạm chính xác đến từng pixel
Hình chữ nhật thật bất côngMặt nạSprite chính xác đến từng pixelVùng va chạm hình tròn3Lớp cho đối tượng trong trò chơi
Lớp đầu tiên của bạnPhương thứcSelf là đối tượngDanh sách đối tượngĐối tượng có hình ảnhDanh sách kẻ địchLớp con6Hoạt ảnh từ sprite sheet
Cắt sprite sheetBộ đếm khung hìnhTạo hoạt ảnh theo thời gianHiệu ứng nổ chỉ chạy một lầnTự luyện tập: Playground Pygame