Подобрете игровото си изживяване с Python Arcade игри, като включите камера.

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

Чрез преместване на гледната точка на камерата можете да създадете визуално привлекателни ефекти, да подобрите механиката на играта и да осигурите по-завладяващо игрово изживяване.

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

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

pip инсталирайте аркада

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

instagram viewer

Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.

Освен това можете да добавите препятствие, за да може играчът да се придвижва.

импортиране аркада

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
СКОРОСТ НА ДВИЖЕНИЕ = 5

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.player_x = ширина // 2
self.player_y = височина // 2

дефнастройвам(себе си):
arcade.set_background_color (arcade.color. НЕБЕСНО СИНЬО)

дефon_draw(себе си):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ЧЕРВЕН)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ЗЕЛЕНО)

дефактуализация(самостоятелно, делта_време):
пас

дефon_key_press(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. НАЛЯВО:
self.player_x -= СКОРОСТ НА ДВИЖЕНИЕ
елиф ключ == arcade.key. ДЯСНО:
self.player_x += MOVEMENT_SPEED

ако __име__ == "__основен__":
игра = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

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

За да добавите камера към играта, създайте a Камера клас, който управлява позицията и движението на камерата. Този клас ще има атрибути като камера_x и камера_y за съхраняване на координатите на камерата.

класКамера:
деф__в него__(себе си):
self.camera_x = 0
self.camera_y = 0

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

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

класMyGame(аркадна. прозорец):
деф__в него__(аз, ширина, височина):
super().__init__(ширина, височина)
self.camera = Камера()
self.player_x = ширина // 2
self.player_y = височина // 2

дефon_key_press(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. НАЛЯВО:
self.player_x -= СКОРОСТ НА ДВИЖЕНИЕ
self.camera.camera_x -= СКОРОСТ НА ДВИЖЕНИЕ
елиф ключ == arcade.key. ДЯСНО:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += СКОРОСТ НА ДВИЖЕНИЕ

дефon_draw(себе си):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ЧЕРВЕН)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ЗЕЛЕНО)

Движение на камерата с въвеждане на мишката

В допълнение към въвеждането на клавиатурата, можете също да активирате движението на камерата въз основа на въвеждане на мишката. Например, можете да позволите на играча да панорамира камерата чрез плъзгане на екрана. За да постигнете това, променете on_mouse_drag метод за актуализиране на позицията на камерата въз основа на движението на мишката.

класMyGame(аркадна. прозорец):
дефon_mouse_drag(self, x, y, dx, dy, бутони, модификатори):
ако бутони == аркада. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Включително допълнителни функции

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

Функционалност за мащабиране

За да приложите функция за мащабиране, трябва да въведете a увеличение променлива в Камера клас и модифицирайте on_mouse_scroll метод за актуализиране на нивото на увеличение въз основа на движението на колелцето на мишката. Вие също трябва да коригирате set_viewport параметри, за да вземете предвид нивото на увеличение.

класКамера:
деф__в него__(себе си):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

класMyGame(аркадна. прозорец):

дефon_mouse_scroll(self, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1

дефon_draw(себе си):
arcade.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.color. ЧЕРВЕН)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ЗЕЛЕНО)

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

За да постигнете по-плавно движение на камерата, можете да въведете техника на интерполация, наречена линейна интерполация (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)

класMyGame(аркадна. прозорец):

дефактуализация(самостоятелно, делта_време):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

дефon_draw(себе си):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ЧЕРВЕН)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ЗЕЛЕНО)

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

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

класКамера:
деф__в него__(себе си):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

дефактуализация(себе си):
self.camera_x = max (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = max (self.min_y, min (self.camera_y, self.max_y))

класMyGame(аркадна. прозорец):

дефактуализация(самостоятелно, делта_време):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

дефon_draw(себе си):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ЧЕРВЕН)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ЗЕЛЕНО)

Това са само няколко примера за това как можете да използвате системата на камерата, за да включите допълнителни функции и ефекти във вашите Python Arcade игри.

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

Най-добри практики за система от камери

Когато внедрявате система от камери във вашата Python Arcade игра, важно е да следвате най-добрите практики, за да осигурите оптимална функционалност и гладко изживяване на играча. Ето някои основни насоки, които трябва да имате предвид:

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

Като следвате тези най-добри практики, можете да създадете стабилна и лесна за използване система от камери, която безпроблемно се интегрира във вашите Python Arcade игри.

Направете игрите по-забавни с помощта на камера

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

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