self.physics_engine.add_sprite(self.player_sprite,
friction=PLAYER_FRICTION ,
mass=PLAYER_MASS,
moment=arcade.PymunkPhysicsEngine.MOMEN T_INF,
collision_type="player",
max_horizontal_velocity=PLAYER_MAX_HORIZON TAL_SPEED,
max_vertical_velocity=PLAYER_MAX_VERTICAL_SPEED)
В данном методе мы указываем нашего персонажа, трение, массу, имя нашего объекта, скорость. Теперь добавим в наш движок и все статические объекты
self.physics_engine.add_sprite_list(self.wall_list,
friction=WALL_FRICTION,
collision_type="wall",
body_type=arcade.PymunkPhysicsEngine.STATIC)
Передаем имя нашего списка объектов, трение, имя и тип тела -
статический
Готово. Теперь можем добавить движение для персонажа.
Первое, что мы сделаем - укажем силу с которой мы будем двигать
игрока
PLAYER_MOVE_FORCE_ON_GROUND = 8000
Нам нужно отслеживать, удерживаются ли нажатыми клавиши влево или вправо. Для этого мы будем изменять значения переменных
left_pressed и right_pressed.
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.left_pressed = True
elif key == arcade.key.RIGHT:
self.right_pressed = True
def on_key_release(self, key, modifiers):
if key == arcade.key.LEFT:
self.left_pressed = False
elif key == arcade.key.RIGHT:
self.right_pressed = False
Наконец, нам нужно применить правильную силу в методе on_update. Сила указана в кортеже, где сначала идет горизонтальная, а п отом
вертикальная сила.
Мы также установим трение, когда мы движемся 0, и когда мы не движемся 1. Это нужно для получения более реалистичного движения.
Do'stlaringiz bilan baham: |