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
bet8/10
Sana17.06.2023
Hajmi0.59 Mb.
#1527190
1   2   3   4   5   6   7   8   9   10
Bog'liq
Занятие 31 Сложный Физ. Движок

dest_x = x
dest_y = y
x_diff = dest_x - start_x
y_diff = dest_y - start_y
angle = math.atan2(y_diff, x_diff)
size = max(self.player_sprite.width, self.player_sprite.height) / 2
bullet.center_x += size * math.cos(angle)
bullet.center_y += size * math.sin(angle)
bullet.angle = math.degrees(angle)
bullet_gravity = (0, -BULLET_GRAVITY)
self.physics_engine.add_sprite(bullet,
mass=BULLET_MASS,
damping=1.0,
friction=0.6,
collision_type="bullet",
gravity=bullet_gravity,
elasticity=0.9)
force = (BULLET_MOVE_FORCE, 0)
self.physics_engine.apply_force(bullet, force)



Для начала добавим имя для объектов
self.physics_engine.add_sprite_list(self.item_list,
friction=DYNAMIC_ITEM_FRICTION,
collision_type="item")


И добавим необходимые обработчики
def wall_hit_handler(bullet_sprite, _wall_sprite, _arbiter, _space, _data):
bullet_sprite.remove_from_sprite_lists()
self.physics_engine.add_collision_handler("bullet", "wall", post_handler=wall_hit_handler)
def item_hit_handler(bullet_sprite, item_sprite, _arbiter, _space, _data):
bullet_sprite.remove_from_sprite_lists()
item_sprite.remove_from_sprite_lists()
self.physics_engine.add_collision_handler("bullet", "item", post_handler=item_hit_handler)


Готово! Все работает, уничтожается. Отлично. Перейдем дальше. 
Давайте теперь добавим движущиеся платформы. На стандартной 
карте они у нас уже существуют, нам остается только их указать в коде. 
Создавать собственные карты на начнём уже со следующего занятия. 
Добавим будущий список платформ

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