Как справиться с движением игрока в ваших аркадных библиотечных играх

2
и технологии 13.webp.webp

Последнее обновление 06.05.2023 — Василий Иванов

Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Arcade — это популярная библиотека Python, которую можно использовать для создания 2D-аркадных игр. Это простая в использовании библиотека, которая предоставляет простую основу для создания игр с помощью Python.

Одним из важнейших компонентов любой игры является движение игрока.

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

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

Прежде чем начать, убедитесь, что на вашем устройстве установлен pip. Используйте эту команду для установки аркадной библиотеки:

 pip install library 

После этого создайте класс Player как подкласс класса arcade.Sprite и класс MyGame как подкласс arcade.Window. Класс MyGame будет иметь методы для настройки игровых объектов, отображения их на экране, обновления состояния игры и обработки ввода пользователя. Код для создания игрового экрана и объекта игрока выглядит следующим образом:

 import arcade

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

class Player(arcade.Sprite):
    def __init__(self):
        super().__init__("player.png", 0.5)
        self.center_x = SCREEN_WIDTH // 2
        self.center_y = SCREEN_HEIGHT // 2

class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
        self.player = None
        arcade.set_background_color(arcade.color.BLACK)

    def setup(self):
        self.player = Player()

    def on_draw(self):
        arcade.start_render()
        self.player.draw()

    def update(self, delta_time):
        pass

MyGame().run()

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

Теперь, когда вы создали игровой экран и объект игрока, вы можете перемещать игрока в ответ на ввод с клавиатуры. Определите методы on_key_press() и on_key_release(), которые вы будете вызывать, когда игрок нажимает или отпускает клавишу.

 def on_key_press(self, key, modifiers):
    if key == arcade.key.LEFT:
        self.player.change_x = -5
    elif key == arcade.key.RIGHT:
        self.player.change_x = 5
    elif key == arcade.key.UP:
        self.player.change_y = 5
    elif key == arcade.key.DOWN:
        self.player.change_y = -5

def on_key_release(self, key, modifiers):
    if key == arcade.key.LEFT or key == arcade.key.RIGHT:
        self.player.change_x = 0
    elif key == arcade.key.UP or key == arcade.key.DOWN:
        self.player.change_y = 0

При добавлении движения игрока с помощью ввода с клавиатуры вы можете настроить скорость движения, изменив значение, присвоенное self.player.change_x и self.player.change_y. Вы также можете добавить условия для ограничения передвижения игрока по игровому экрану.

Добавление движения игрока с помощью мыши

В дополнение к вводу с клавиатуры вы также можете добавить движение игрока с помощью ввода с помощью мыши. Определите метод on_mouse_motion(), который будет запускаться, когда игрок перемещает мышь. Внутри метода установите свойства center_x и center_y объекта игрока в текущую позицию мыши.

 def on_mouse_motion(self, x, y, dx, dy):
    self.player.center_x = x
    self.player.center_y = y

При добавлении движения игрока с помощью мыши вы можете настроить поведение объекта игрока, когда пользователь щелкает мышью или удерживает ее, определив такие методы, как on_mouse_press() или on_mouse_drag(). Вы можете использовать эти методы для запуска действий игрока, таких как стрельба или прыжок, в зависимости от игровой механики.

Представляем дополнительные функции

Вы можете улучшить движение игрока, принимая во внимание ускорение и замедление. Измените метод on_key_press(), чтобы вычитать или добавлять к свойствам change_x и change_y объекта игрока в зависимости от направления движения. Также установите для свойств change_x и change_y значение 0 в методе on_key_release(), как и раньше.

 def on_key_press(self, key, modifiers):
    if key == arcade.key.LEFT:
        self.player.change_x -= 5
    elif key == arcade.key.RIGHT:
        self.player.change_x += 5
    elif key == arcade.key.UP:
        self.player.change_y += 5
    elif key == arcade.key.DOWN:
        self.player.change_y -= 5

def on_key_release(self, key, modifiers):
    if key == arcade.key.LEFT or key == arcade.key.RIGHT:
        self.player.change_x = 0
    elif key == arcade.key.UP or key == arcade.key.DOWN:
        self.player.change_y = 0

Как и в PyGame, вы также можете добавить обнаружение столкновений между объектом игрока и другими игровыми объектами, такими как враги или препятствия в аркаде. Этого можно добиться, добавив следующий код в метод update() класса MyGame:

 def update(self, delta_time):
    self.player.update()

    # Check for collisions between player and other game objects
    collisions = arcade.check_for_collision_with_list(self.player, self.enemy_list)

    for collision in collisions:
        collision.kill()

Создавайте увлекательные игры с интерактивным движением игроков

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

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