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


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

def on_update(self, delta_time):
if self.left_pressed and not self.right_pressed:
force = (-PLAYER_MOVE_FORCE_ON_GROUND, 0)
self.physics_engine.apply_force(self.player_sprite, force)
self.physics_engine.set_friction(self.player_sprite, 0)
elif self.right_pressed and not self.left_pressed:
force = (PLAYER_MOVE_FORCE_ON_GROUND, 0)
self.physics_engine.apply_force(self.player_sprite, force)
self.physics_engine.set_friction(self.player_sprite, 0)
else:
self.physics_engine.set_friction(self.player_sprite, 1.0)
self.physics_engine.step()


Добавим возможность прыжка 
создадим переменную
PLAYER_JUMP_IMPULSE = 1800


И добавим обработку нажатия 
клавиши вверх
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
elif key == arcade.key.UP:
if self.physics_engine.is_on_ground(self.player_sprite):
impulse = (0, PLAYER_JUMP_IMPULSE)
self.physics_engine.apply_impulse(self.player_sprite, impulse)


Чтобы создать анимацию игрока, мы создадим 
отдельный класс. Мы загружаем каждый кадр 
анимации, который нам нужен, включая его 
зеркальное отображение.
Также требуется поворачивать игрока лицом 
влево или вправо. Если игрок находится в воздухе, 
мы также изменим графику между прыжком вверх 
и падением.
Поскольку физический движок работает с 
небольшими числами с плавающей запятой, он 
часто отклоняется выше и ниже нуля на 
небольшие величины. Рекомендуется не менять 
анимацию, так как значения x и y плавающие. По 
этой причине мы укажем «мертвую зону». Мы не 
будем менять анимацию, пока она не выйдет за 
пределы этой зоны.
Нам также нужно контролировать, насколько 
далеко перемещается игрок, прежде чем мы 
изменим анимацию ходьбы
DEAD_ZONE = 0.1
RIGHT_FACING = 0
LEFT_FACING = 1
DISTANCE_TO_CHANGE_TEXTURE = 20


LayerSprite

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