Научете как да моделирате камера, която може да се движи в света на играта ви, за да добавите реализъм и функционалност.

Една обща характеристика, която ще откриете в много игри, е скролираща камера, която ви следва, докато се движите из света на играта. Този ефект може да добави дълбочина и реализъм към вашата игра и да подобри цялостното игрово изживяване.

Има много различни начини за внедряване на камера за превъртане в PyGame, така че се уверете, че разбирате разликите им.

Създаване на проста игра

Преди да започнете, инсталирайте pip на вашето устройство и използвайте командата по-долу, за да инсталирате модула PyGame:

pip инсталирайте pygame

Сега можете да създадете проста игра с правоъгълник на играч и две статични платформи. Играчът може да се движи наляво и надясно с помощта на клавишите със стрелки.

Можете да намерите пълния код за проекта тук GitHub репо.

Започнете с импортиране на модула pygame. След това го инициализирайте и създайте прозореца на играта, като използвате pygame.display.set_mode()

instagram viewer
функция. След това задайте надписа на прозореца и създайте часовников обект за управление на кадровата честота.

импортиране pygame

pygame.init()

WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

екран = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

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

часовник = pygame.time. Часовник()

BACKGROUND_COLOR = (255, 255, 255)

След това настройте плейъра и статичните платформи. Определете размера на играча и първоначалната му позиция.

PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50

player_x = WINDOW_WIDTH // 2 - PLAYER_WIDTH // 2
player_y = WINDOW_HEIGHT - PLAYER_HEIGHT - 20

PLAYER_SPEED = 10

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

rectangle_1 = pygame. Rect(200, 200, 100, 100)
rectangle_2 = pygame. Rect(500, 300, 150, 50)

След това създайте цикъл на игра, който обработва събития и актуализира екрана. В цикъла проверете за събития като излизане от играта или преместване на играча с помощта на клавишите със стрелки.

докатоВярно:
# Обработвайте събития
за събитие в pygame.event.get():
ако event.type == pygame. ИЗХОД:
pygame.quit()
напусни ()

# Начертайте фона
screen.fill (BACKGROUND_COLOR)

# Начертайте статичните правоъгълници
pygame.draw.rect (екран, RECTANGLE_COLOR_1, правоъгълник_1)
pygame.draw.rect (екран, RECTANGLE_COLOR_2, правоъгълник_2)

# Начертайте играча
player_rect = pygame. Rect (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

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

# Актуализирайте дисплея
pygame.display.update()

# Ограничете скоростта на кадрите
clock.tick(30)

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

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

За да настроите камерата, първо трябва да дефинирате променлива за задържане на X отместването на камерата. Обадете се на тази променлива camera_offset_x и го инициализирайте на 0.

# Задайте отместването на камерата
camera_offset_x = 0

След това актуализирайте позициите на всички обекти, които рисувате на екрана, за да вземете предвид отместването на камерата. Можете да направите това, като добавите camera_offset_x стойност спрямо позицията X на всеки обект. Например, можете да актуализирате позицията на играча по следния начин:

# Начертайте играча
player_rect = pygame. Rect (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

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

По подобен начин можете да актуализирате позициите на статичните платформи, както следва:

# Начертайте статичните правоъгълници
rectangle_1_draw_pos = rectangle_1.move (camera_offset_x, 0)
pygame.draw.rect (екран, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = rectangle_2.move (camera_offset_x, 0)
pygame.draw.rect (екран, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

Преместване на камерата с въвеждане от клавиатурата

Сега, след като сте настроили камерата, можете да започнете да я местите. Един от начините да направите това е да преместите камерата в отговор на въвеждане от клавиатурата. Например, можете да преместите камерата наляво, когато играчът натисне клавиша със стрелка наляво.

За да направите това, добавете следния код в цикъла на събитията, който обработва въвеждането на клавиатурата:

ако event.type == pygame. KEYDOWN:
ако event.key == pygame. K_НАЛЯВО:
camera_offset_x -= PLAYER_SPEED
елиф event.key == pygame. K_RIGHT:
camera_offset_x += PLAYER_SPEED

Друг начин е да промените x координатата на играча при натискане на клавиатурата и след това да актуализирате отместването на камерата. Можете да приложите това така:

# Обработвайте събития
за събитие в pygame.event.get():
ако event.type == pygame. ИЗХОД:
pygame.quit()
напусни ()

ако event.type == pygame. KEYDOWN:
ако event.key == pygame. K_НАЛЯВО:
player_x -= PLAYER_SPEED
елиф event.key == pygame. K_RIGHT:
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.quit()
напусни ()

ако event.type == pygame. MOUSEBUTTONDOWN:
ако event.button == 1:
mouse_start_pos = pygame.mouse.get_pos()

ако event.type == pygame. MOUSEMOTION:
ако 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. Rect(
get_scaled_size (player_x + camera_offset_x),
get_scaled_size (player_y),
get_scaled_size (PLAYER_WIDTH),
get_scaled_size (PLAYER_HEIGHT)
)

По подобен начин актуализирайте позициите и размерите на статичните платформи, както следва:

rectangle_1_draw_pos = pygame. Rect(
get_scaled_size (rectangle_1.x + camera_offset_x),
get_scaled_size (правоъгълник_1.y),
get_scaled_size (правоъгълник_1.ширина),
get_scaled_size (правоъгълник_1.височина)
)

pygame.draw.rect (екран, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = pygame. Rect(
get_scaled_size (rectangle_2.x + camera_offset_x),
get_scaled_size (правоъгълник_2.y),
get_scaled_size (правоъгълник_2.ширина),
get_scaled_size (правоъгълник_2.височина)
)

pygame.draw.rect (екран, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

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

ако event.type == pygame. KEYDOWN:
ако event.key == pygame. K_EQUALS:
увеличение += 0.1

екран = pygame.display.set_mode((
int (WINDOW_WIDTH * мащабиране),
int (WINDOW_HEIGHT * мащабиране)
))
елиф event.key == pygame. K_MINUS:
увеличение -= 0.1

ако мащабиране < 0.1:
увеличение = 0.1

екран = pygame.display.set_mode((
int (WINDOW_WIDTH * мащабиране),
int (WINDOW_HEIGHT * мащабиране)
))

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

Подобряване на играта с движения на камерата

Добавянето на камера за превъртане към игра на PyGame не само подобрява визуалното изживяване, но и подобрява играта. Позволява на играча да види повече от света на играта, осигурявайки му по-добро разбиране на заобикалящата го среда и улеснявайки навигацията.

Можете също да използвате движението на камерата, за да създадете специални ефекти като увеличаване и намаляване или разклащане на екрана, за да симулирате експлозии или земетресения.