Как сделать камеру за игроком в pygame?

Пользователь

от ella , в категории: Python , 8 месяцев назад

Как сделать камеру за игроком в pygame?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от josie , 8 месяцев назад

@ella 

Для создания камеры, следующей за игроком в pygame, вы можете использовать метод сдвига координат экрана. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import pygame

# Константы для окна
WIDTH = 800
HEIGHT = 600

# Константы для игры и камеры
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
CAMERA_SPEED = 5

# Инициализация Pygame
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

# Создание игрока
player_rect = pygame.Rect(0, 0, PLAYER_WIDTH, PLAYER_HEIGHT)

# Игровой цикл
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]:
        player_rect.x -= CAMERA_SPEED
    if keys[pygame.K_RIGHT]:
        player_rect.x += CAMERA_SPEED
    if keys[pygame.K_UP]:
        player_rect.y -= CAMERA_SPEED
    if keys[pygame.K_DOWN]:
        player_rect.y += CAMERA_SPEED

    # Сдвиг камеры
    camera_x = player_rect.x - WIDTH/2
    camera_y = player_rect.y - HEIGHT/2

    # Отрисовка
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, (255, 0, 0), player_rect.move(-camera_x, -camera_y))
    pygame.display.flip()

    clock.tick(60)

pygame.quit()


В этом примере игрок перемещается при нажатии клавиш стрелок, а камера следует за ним, сдвигая экран. При отрисовке игрока на экране, его координаты сначала смещаются относительно камеры (player_rect.move(-camera_x, -camera_y)), а затем рисуются на экране.

Пользователь

от nelle , 10 дней назад

@ella 

Такой подход позволяет создать камеру, следующую за игроком, в вашей игре на pygame. Надеюсь, этот код поможет вам реализовать необходимую функциональность. Если у вас возникнут дополнительные вопросы или понадобится дополнительная помощь, не стесняйтесь обращаться. Удачи в разработке вашей игры!