Улучшите свои игровые возможности с помощью игр Python Arcade, включив камеру.

Библиотека Python Arcade — это мощная и удобная среда для создания 2D-игр. Одной из ключевых функций, которая может значительно улучшить игровой процесс и пользовательский опыт, является добавление камеры. Добавление камеры в вашу игру позволяет динамически манипулировать областью просмотра, позволяя игроку исследовать большие игровые миры, фокусироваться на определенных областях или отслеживать движущиеся объекты.

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

Создайте простую игру

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

пип установить аркада

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

Код, используемый в этой статье, доступен в этом

instagram viewer
Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

Кроме того, вы можете добавить препятствие, по которому игрок сможет перемещаться.

Импортировать аркада

ЭКРАН_ШИРИНА = 800
ЭКРАН_ВЫСОТА = 600
ДВИЖЕНИЕ_СКОРОСТЬ = 5

сортМоя игра(аркада. Окно):
деф__в этом__(собственность, ширина, высота):
super().__init__(ширина, высота)
self.player_x = ширина // 2
self.player_y = высота // 2

дефнастраивать(себя):
arcade.set_background_color (arcade.color. ГОЛУБОЕ НЕБО)

дефon_draw(себя):
аркада.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, аркада.цвет. КРАСНЫЙ)
arcade.draw_rectangle_filled(400, 200, 80, 40, аркада.цвет. ЗЕЛЕНЫЙ)

дефобновлять(я, дельта_время):
проходить

дефon_key_press(я, ключ, модификаторы):
если ключ == аркада.ключ. ЛЕВЫЙ:
self.player_x -= ДВИЖЕНИЕ_СКОРОСТЬ
Элиф ключ == аркада.ключ. ВЕРНО:
self.player_x += MOVEMENT_SPEED

если __имя__ == "__основной__":
игра = Моя игра (SCREEN_WIDTH, SCREEN_HEIGHT)
игра.настройка()
аркада.run()

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

Чтобы добавить камеру в игру, создайте Камера класс, который управляет положением и движением камеры. Этот класс будет иметь такие атрибуты, как camera_x и camera_y для хранения координат камеры.

сортКамера:
деф__в этом__(себя):
self.camera_x = 0
self.camera_y = 0

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

Затем измените настройки игры. on_key_press способ включить камеру движение на основе входов игрока. Когда игрок перемещается влево или вправо, вы можете соответствующим образом обновить положение камеры. Кроме того, настройте код отрисовки так, чтобы положение камеры учитывалось при рендеринге игровых объектов.

сортМоя игра(аркада. Окно):
деф__в этом__(собственность, ширина, высота):
super().__init__(ширина, высота)
self.camera = Камера()
self.player_x = ширина // 2
self.player_y = высота // 2

дефon_key_press(я, ключ, модификаторы):
если ключ == аркада.ключ. ЛЕВЫЙ:
self.player_x -= ДВИЖЕНИЕ_СКОРОСТЬ
self.camera.camera_x -= ДВИЖЕНИЕ_СКОРОСТЬ
Элиф ключ == аркада.ключ. ВЕРНО:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += ДВИЖЕНИЕ_СКОРОСТЬ

дефon_draw(себя):
аркада.start_render()
arcade.set_viewport(
селф.камера.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
селф.камера.камера_у,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, аркада.цвет. КРАСНЫЙ)
arcade.draw_rectangle_filled(400, 200, 80, 40, аркада.цвет. ЗЕЛЕНЫЙ)

Движение камеры с помощью мыши

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

сортМоя игра(аркада. Окно):
дефon_mouse_drag(я, x, y, dx, dy, кнопки, модификаторы):
если кнопки == аркада. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= дх
self.camera.camera_y -= dy

Включая дополнительные функции

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

Функция масштабирования

Чтобы реализовать функцию масштабирования, вам необходимо ввести зум переменная в Камера класс и изменить on_mouse_scroll метод обновления уровня масштабирования на основе движения колесика мыши. Также необходимо настроить set_viewport параметры для учета уровня масштабирования.

сортКамера:
деф__в этом__(себя):
self.camera_x = 0
self.camera_y = 0
селф.зум = 1.0

сортМоя игра(аркада. Окно):

дефon_mouse_scroll(я, х, у, прокрутка_х, прокрутка_у):
self.camera.zoom += scroll_y * 0.1

дефon_draw(себя):
аркада.start_render()
arcade.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, аркада.цвет. КРАСНЫЙ)
arcade.draw_rectangle_filled(400, 200, 80, 40, аркада.цвет. ЗЕЛЕНЫЙ)

Плавное движение камеры

Чтобы добиться более плавного движения камеры, вы можете ввести технику интерполяции, называемую линейной интерполяцией (lerp). Изменить обновлять метод постепенного перемещения камеры к целевой позиции с помощью lerp. Это создает эффект плавного перехода.

сортКамера:
деф__в этом__(себя):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

дефобновлять(себя):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)

сортМоя игра(аркада. Окно):

дефобновлять(я, дельта_время):
self.camera.target_x = self.player_x - ШИРИНА_ЭКРАНА // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

дефon_draw(себя):
аркада.start_render()
arcade.set_viewport(
селф.камера.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
селф.камера.камера_у,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, аркада.цвет. КРАСНЫЙ)
arcade.draw_rectangle_filled(400, 200, 80, 40, аркада.цвет. ЗЕЛЕНЫЙ)

Ограничения камеры

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

сортКамера:
деф__в этом__(себя):
self.camera_x = 0
self.camera_y = 0
сам.мин_х = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

дефобновлять(себя):
self.camera_x = макс (self.min_x, мин (self.camera_x, self.max_x))
self.camera_y = макс (self.min_y, мин (self.camera_y, self.max_y))

сортМоя игра(аркада. Окно):

дефобновлять(я, дельта_время):
self.camera.camera_x = self.player_x - ШИРИНА_ЭКРАНА // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

дефon_draw(себя):
аркада.start_render()
arcade.set_viewport(
селф.камера.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
селф.камера.камера_у,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, аркада.цвет. КРАСНЫЙ)
arcade.draw_rectangle_filled(400, 200, 80, 40, аркада.цвет. ЗЕЛЕНЫЙ)

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

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

Лучшие практики для системы камер

При реализации системы камер в вашей игре Python Arcade важно следовать передовым методам, чтобы обеспечить оптимальную функциональность и плавный игровой процесс. Вот несколько основных рекомендаций, о которых следует помнить:

  • Избегайте чрезмерного движения камеры: хотя камера может добавить в игру динамических элементов, очень важно соблюдать баланс и избегать чрезмерного движения камеры. Постоянное изменение положения камеры может дезориентировать игроков и усложнить им навигацию по игровому миру.
  • Тестируйте с разными разрешениями и соотношениями сторон: очень важно протестировать систему камеры с различными разрешениями экрана и соотношениями сторон, чтобы убедиться, что она хорошо работает на разных устройствах и в разных конфигурациях. Это поможет вам определить любые проблемы, связанные с масштабированием окна просмотра, позиционированием объекта или настройками соотношения сторон.
  • Оптимизация рендеринга: система камер потенциально может повлиять на производительность игры, особенно при рендеринге больших игровых миров или множества объектов. Чтобы оптимизировать рендеринг, определите, какие объекты находятся за пределами поля зрения камеры, и исключите их из рендеринга.
  • Обработка пограничных случаев: обратите внимание на крайние случаи, когда камера может столкнуться с определенными сценариями, такими как границы, обнаружение столкновений или перекрывающиеся объекты. Убедитесь, что система камер изящно обрабатывает эти случаи и обеспечивает плавные переходы или соответствующие визуальные подсказки, указывающие на ограничения или взаимодействия с игровой средой.

Следуя этим рекомендациям, вы сможете создать надежную и удобную систему камер, которая легко интегрируется в ваши игры Python Arcade.

Сделайте игры более увлекательными с помощью камеры

Добавив камеру в свои игры Python Arcade, вы можете значительно улучшить погружение и вовлеченность игроков. Будь то создание обширных игровых миров, фокусировка на критических областях или отслеживание движущихся объектов, система камер представляет собой мощный инструмент для разработчиков игр.

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