I mport arcade screen title = "Использование PyMunk" screen width = 800 screen height = 600 class GameWindow(arcade. Window): def init (self, width, height, title): super init (width, height, title) def setup(self): pass def on key press


self.physics_engine.add_sprite(self.player_sprite


Download 0.59 Mb.
Pdf ko'rish
bet4/10
Sana17.06.2023
Hajmi0.59 Mb.
#1527190
1   2   3   4   5   6   7   8   9   10
Bog'liq
Занятие 31 Сложный Физ. Движок

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. Это нужно для получения более реалистичного движения.

Download 0.59 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling