Cách tạo hình nền cuộn trong Pygame

Thư viện game Python này chứa rất nhiều tính năng, bao gồm một số công cụ đơn giản mà bạn có thể dùng để tạo background cuộn song song, mượt mà cho game.

Tạo màn hình cuộn cho game

Background cuộn có thể nâng cao đáng kể sức hấp dẫn của hình ảnh và chiều sâu của game. Chung có thể tạo minh họa cho chuyển động, mang tới cho game sự sống động và cuốn hút. Bạn có thể tạo background dạng cuộn chỉ sau vài bước đơn giản bằng Pygame.

Tạo một game đơn giản

Để hiểu khái niệm background cuộn trong Pygame, bắt đầu bằng việc tạo một game đơn giản mà người chơi có thể di chuyển sang trái và phải. Bạn cũng có thể bao gồm 2 nền tảng, được đại diện bằng hình chữ nhật, biểu thị cho môi trường game. Tạo một file mới tên simple-game.py.

Đầu tiên, nhập mô đun pygame và khởi tạo nó. Sau đó, xác định vị trí bắt đầu và tốc độ di chuyển của người chơi. Tạo platform bằng đối tượng pygame.Rect và xác định vị trí và kích thước của chúng.

Bên trong game loop, xử lý các sự kiện, chẳng hạn như thoát game. Bạn cũng có thể xử lý chuyển động của người chơi dựa trên thao tác nhập hoặc chạm.

Kết quả:

Tạo background cuộn cho Pygame

Tạo các layer khác nhau

Để có được hiệu ứng cuộn, bạn có thể tạo nhiều lớp background với màu sắc khác nhau. Mỗi lớp sẽ di chuyển ở tốc độ khác nhau, tạo hiệu ứng parallax. Hiệu ứng này tạo ảo giác về chiều sâu và tăng cường cảm giác chuyển động trong game.

Xác định hai layer background, một lớp che phủ toàn bộ cửa sổ game, dùng các đối tượng pygame.Rect. Ngoài ra, chọn màu cho từng lớp trong danh sách background_colors. Danh sách background_speeds xác định tốc độ mà mỗi người chơi sẽ di chuyển.

# Thêm code này vào phần trước đó
 
background_layers = [
    pygame.Rect(0, 0, screen_width, screen_height),
    pygame.Rect(0, 0, screen_width, screen_height)
]
 
background_colors = [(30, 30, 30), (60, 60, 60)]
background_speeds = [0.1, 1.0]

Thêm hiệu ứng cuộn background

Để tạo hiệu ứng cuộn hình nền, bạn cần update vị trí của cá lớp background trong vòng lặp game. Bạn sẽ di chuyển từng layer theo chiều dọc dựa trên tốc độ được chỉ định.

Tạo file mới tên scrolling-bg.py và thêm code này với những update bên dưới:

for i in range(len(background_layers)):
    background_layers[i].x -= background_speeds[i]
 
    if background_layers[i].x <= -screen_width:
        background_layers[i].x = 0
 
    pygame.draw.rect(screen, background_colors[i], background_layers[i])

Lặp qua từng layer background. Trừ tốc độ tương ứng từ tọa độ x của layer đó, khiến nó di chuyển sang trái. Nếu layer chạm tới cạnh trái của màn hình, reset vị trí của nó sang phải, tạo hiệu ứng cuộn liên tục.

Cuối cùng, vẽ từng layer background hình chữ nhật trên màn hình bằng pygame.draw.rect() và chuyển màu & đối tượng pygame.Rect tương ứng.

Hiệu ứng hình nền cuộn

Thêm hiệu ứng parallax trong khi di chuyển

Để nâng cao hiệu ứng parallax, bạn có thể chỉnh sửa chuyển động của nền tảng này xảy ra khi người chơi đang di chuyển. Điều này sẽ tạo cảm giác chiều sâu rõ ràng và chuyển động linh hoạt. Tạo file mới tên parallax.py và thêm code cùng những update bên dưới:

# Xác định vị trí và tốc độ của platform
rect1 = pygame.Rect(50, screen_height - 100, 200, 10)
rect2 = pygame.Rect(screen_width - 250, screen_height - 200, 200, 10)
 
platforms = [
    {"rect": rect1, "speed": 3},
    {"rect": rect2, "speed": 1}
]
 
# Thêm code này vào bên trong vòng lặp game
 
# Chuyển động của người chơi
keys = pygame.key.get_pressed()
 
if keys[pygame.K_LEFT] and player_x > 0:
    player_x -= player_speed
 
    for platform in platforms:
        platform["rect"].x -= platform["speed"]
 
if keys[pygame.K_RIGHT] and player_x < screen_width:
    player_x += player_speed
 
    for platform in platforms:
        platform["rect"].x += platform["speed"]
 
for platform in platforms:
    pygame.draw.rect(screen, (0, 255, 0), platform["rect"])

Trình bày các nền tảng dưới dạng từ điển chứa cả hai đối tượng hình chữ nhật và tốc độ của nền tảng sẽ di chuyển. Nền tảng này update trong game loop dựa trên chuyển động của người chơi.

Bằng cách hoàn thiện chỉnh sửa này, hiệu ứng cuộn sẽ chỉ hoạt động khi người chơi đang thực sự di chuyển, tăng cường cảm giác về chiều sâu và chuyện động.

Trên đây là cách tạo hình nền dạng cuộn cho game bằng PyGame. Hi vọng bài viết hữu ích với các bạn.

Chủ Nhật, 23/07/2023 08:45
2,33 👨 389
0 Bình luận
Sắp xếp theo
    ❖ Python