Узнайте, как смоделировать камеру, которая может перемещаться по игровому миру, чтобы добавить реализма и функциональности.

Одна общая функция, которую вы найдете во многих играх, — это камера с прокруткой, которая следует за вами, когда вы перемещаетесь по игровому миру. Этот эффект может добавить глубины и реализма вашей игре и улучшить общий игровой процесс.

В PyGame существует множество различных способов реализации камеры с прокруткой, поэтому убедитесь, что вы понимаете их различия.

Создание простой игры

До начала, установить пип на свое устройство и используйте следующую команду для установки модуля PyGame:

pip установить pygame

Теперь вы можете создать простую игру с прямоугольником игрока и двумя статическими платформами. Игрок может перемещаться влево и вправо с помощью клавиш со стрелками.

Вы можете найти полный код проекта в этом репозиторий GitHub.

Начните с импорта модуля pygame. Затем инициализируйте его и создайте окно игры с помощью pygame.display.set_mode() функция. Затем установите заголовок окна и создайте объект часов для управления частотой кадров.

Импортировать пигейм

pygame.init()

WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

pygame.display.set_caption(«Моя простая игра»)

часы = pygame.time. Часы()

ФОН_ЦВЕТ = (255, 255, 255)

Далее настройте плеер и статические платформы. Определите размер игрока и его начальное положение.

ШИРИНА ИГРОКА = 50
ВЫСОТА_ИГРОКА = 50

player_x = WINDOW_WIDTH// 2 - ШИРИНА ИГРОКА // 2
player_y = WINDOW_HEIGHT - PLAYER_HEIGHT - 20

PLAYER_SPEED = 10

RECTANGLE_COLOR_1 = (255, 0, 0)
RECTANGLE_COLOR_2 = (0, 0, 255)

прямоугольник_1 = pygame. Прямой(200, 200, 100, 100)
прямоугольник_2 = pygame. Прямой(500, 300, 150, 50)

Затем создайте игровой цикл, который обрабатывает события и обновляет экран. В цикле проверяйте такие события, как выход из игры или перемещение игрока с помощью клавиш со стрелками.

покаИстинный:
# Обработка событий
для событие в pygame.event.get():
если event.type == pygame. ПОКИДАТЬ:
pygame.выйти()
покидать()

# Рисуем фон
screen.fill (BACKGROUND_COLOR)

# Рисуем статические прямоугольники
pygame.draw.rect (экран, RECTANGLE_COLOR_1, прямоугольник_1)
pygame.draw.rect (экран, RECTANGLE_COLOR_2, прямоугольник_2)

# Рисуем игрока
player_rect = pygame. Прямоугольник (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

pygame.draw.rect (экран, (0, 0, 0), player_rect)

# Обновить дисплей
pygame.display.update()

# Ограничить частоту кадров
часы.тик(30)

Настройка камеры

Теперь, когда у вас есть простая игра с прямоугольником игрока и двумя статическими платформами, вы можете начать работать с камерой. В PyGame камера — это, по сути, просто смещение, которое действует на все объекты, которые вы рисуете на экране. Это означает, что если вы переместите камеру влево, все на экране будет двигаться вправо.

Чтобы настроить камеру, сначала нужно определить переменную для хранения смещения камеры по оси X. Назовите эту переменную camera_offset_x и инициализировать его на 0.

# Установить смещение камеры
camera_offset_x = 0

Затем обновите позиции всех объектов, которые вы рисуете на экране, чтобы учесть смещение камеры. Вы можете сделать это, добавив camera_offset_x значение позиции X каждого объекта. Например, вы можете обновить позицию игрока следующим образом:

# Рисуем игрока
player_rect = pygame. Прямоугольник (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

pygame.draw.rect (экран, (0, 0, 0), player_rect)

Точно так же вы можете обновить позиции статических платформ следующим образом:

# Рисуем статические прямоугольники
прямоугольник_1_draw_pos = прямоугольник_1.перемещение (камера_смещение_x, 0)
pygame.draw.rect (экран, RECTANGLE_COLOR_1, прямоугольник_1_draw_pos)

прямоугольник_2_draw_pos = прямоугольник_2.перемещение (камера_смещение_x, 0)
pygame.draw.rect (экран, RECTANGLE_COLOR_2, прямоугольник_2_draw_pos)

Перемещение камеры с помощью клавиатуры

Теперь, когда вы настроили камеру, вы можете начать перемещать ее. Один из способов сделать это — перемещать камеру в ответ на ввод с клавиатуры. Например, вы можете переместить камеру влево, когда игрок нажимает клавишу со стрелкой влево.

Для этого добавьте следующий код в цикл событий, который обрабатывает ввод с клавиатуры:

если event.type == pygame. КЛЮЧ:
если event.key == pygame. K_LEFT:
camera_offset_x = PLAYER_SPEED
Элиф event.key == pygame. К_ПРАВО:
camera_offset_x += PLAYER_SPEED

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

# Обработка событий
для событие в pygame.event.get():
если event.type == pygame. ПОКИДАТЬ:
pygame.выйти()
покидать()

если event.type == pygame. КЛЮЧ:
если event.key == pygame. K_LEFT:
player_x -= PLAYER_SPEED
Элиф event.key == pygame. К_ПРАВО:
player_x += PLAYER_SPEED

Затем вы можете обновить смещение камеры относительно координаты x игрока следующим образом:

camera_offset_x = WINDOW_WIDTH// 2 - player_x - PLAYER_WIDTH // 2

Перемещение камеры с помощью мыши

Другой способ перемещения камеры — использование мыши. Вы можете позволить игроку перетаскивать экран, щелкая и перетаскивая мышь.

Для этого отслеживайте положение мыши, когда игрок нажимает левую кнопку мыши. Когда они перемещают мышь, обновляют координату x игрока. Он должен измениться на разницу между текущим положением мыши и исходным положением, которое вы отслеживали, mouse_start_pos.

# Обработка событий
для событие в pygame.event.get():
если event.type == pygame. ПОКИДАТЬ:
pygame.выйти()
покидать()

если event.type == pygame. КНОПКА МЫШИ ВНИЗ:
если событие.кнопка == 1:
mouse_start_pos = pygame.mouse.get_pos()

если event.type == pygame. ДВИЖЕНИЕ МЫШИ:
если pygame.mouse.get_pressed()[0]:
mouse_current_pos = pygame.mouse.get_pos()
mouse_offset_x = mouse_current_pos[0] - mouse_start_pos[0]
player_x -= mouse_offset_x
mouse_start_pos = mouse_current_pos

Добавление дополнительных функций камеры

Помимо эффекта прокрутки камеры, вы можете добавить несколько других функций, связанных с камерой, чтобы улучшить игровой процесс. Одной из таких функций является эффект масштабирования камеры, который позволяет игроку увеличивать или уменьшать масштаб игрового мира. Добиться такого эффекта можно, изменив размер игрового окна и масштабируя объекты, рисуемые на экране.

Для этого определите переменную масштабирования, в которой будет храниться текущий уровень масштабирования игры. Установите его начальное значение на 1,0, что означает отсутствие масштабирования. Затем определите функцию, которая будет вычислять масштабированный размер объекта на основе текущего уровня масштабирования.

зум = 1.0

дефget_scaled_size(размер):
возвращаться int (размер * масштаб)

Затем обновите положение и размеры объектов, нарисованных на экране, с помощью get_scaled_size функция. Например, вы можете обновить положение и размер игрока следующим образом:

player_rect = pygame. Прямой(
get_scaled_size (player_x + camera_offset_x),
get_scaled_size (player_y),
get_scaled_size (PLAYER_WIDTH),
get_scaled_size (PLAYER_HEIGHT)
)

Аналогичным образом обновите позиции и размеры статических платформ следующим образом:

прямоугольник_1_draw_pos = pygame. Прямой(
get_scaled_size (прямоугольник_1.x + camera_offset_x),
get_scaled_size (прямоугольник_1.y),
get_scaled_size (прямоугольник_1.ширина),
get_scaled_size (прямоугольник_1.высота)
)

pygame.draw.rect (экран, RECTANGLE_COLOR_1, прямоугольник_1_draw_pos)

прямоугольник_2_draw_pos = pygame. Прямой(
get_scaled_size (прямоугольник_2.x + camera_offset_x),
get_scaled_size (прямоугольник_2.y),
get_scaled_size (прямоугольник_2.ширина),
get_scaled_size (прямоугольник_2.высота)
)

pygame.draw.rect (экран, RECTANGLE_COLOR_2, прямоугольник_2_draw_pos)

Увеличение или уменьшение масштаба на 0,1, когда игрок нажимает кнопку = или - ключ соответственно. Установите новый размер игрового окна на основе текущего уровня масштабирования. Для этого добавьте следующий код в цикл событий, который обрабатывает ввод с клавиатуры:

если event.type == pygame. КЛЮЧ:
если event.key == pygame. К_РАВНО:
увеличить += 0.1

экран = pygame.display.set_mode((
интервал (WINDOW_WIDTH * масштаб),
интервал (WINDOW_HEIGHT * масштаб)
))
Элиф event.key == pygame. К_МИНУС:
зум -= 0.1

если увеличить < 0.1:
зум = 0.1

экран = pygame.display.set_mode((
интервал (WINDOW_WIDTH * масштаб),
интервал (WINDOW_HEIGHT * масштаб)
))

С помощью приведенного выше кода вы успешно добавили эффект масштабирования камеры в нашу игру PyGame. Комбинируя эту функцию с эффектом прокрутки камеры, вы можете создать динамичный и увлекательный игровой процесс.

Улучшение игрового процесса с помощью движений камеры

Добавление прокручиваемой камеры в игру PyGame не только улучшает визуальное восприятие, но и улучшает игровой процесс. Это позволяет игроку видеть больше игрового мира, лучше понимать свое окружение и упрощает навигацию.

Вы также можете использовать движение камеры для создания специальных эффектов, таких как увеличение и уменьшение масштаба или дрожание экрана для имитации взрывов или землетрясений.