diff --git a/src/plugins/physics.py b/src/plugins/physics.py index 305aed2..15c3fb3 100644 --- a/src/plugins/physics.py +++ b/src/plugins/physics.py @@ -173,6 +173,10 @@ def move_entity(entity: Entity, movement: Vec2, disable_callback: bool = False): if normal.y != 0: movement.y *= -1 entity[Velocity].y *= -1 + if entity[Velocity].x == 0: + entity[Velocity].x = 0.01 + if entity[Velocity].y == 0: + entity[Velocity].y = 0.01 movement /= entity[Velocity] if obstacle is not None and not disable_callback: if not entity.get( @@ -183,6 +187,10 @@ def move_entity(entity: Entity, movement: Vec2, disable_callback: bool = False): CollisionHandler, CollisionHandler(lambda e, o: True) ).callback(obstacle, entity): break + if entity[Velocity].x == 0: + entity[Velocity].x = 0.01 + if entity[Velocity].y == 0: + entity[Velocity].y = 0.01 movement *= entity[Velocity] counter += 1 diff --git a/src/scenes/game.py b/src/scenes/game.py index b30d352..fd38afb 100644 --- a/src/scenes/game.py +++ b/src/scenes/game.py @@ -264,9 +264,9 @@ def __spawn_ellements(world: World): SpriteBundle( "player_1.png", 0, - Vec2(100, render.HEIGHT / 2), + Vec2(125, render.HEIGHT / 2), Vec2(44, 250), - Vec2(0.5), + Vec2(1, 0.5), ), Solid(), Player1(), @@ -282,9 +282,9 @@ def __spawn_ellements(world: World): SpriteBundle( "player_2.png", 0, - Vec2(render.WIDTH - 100, render.HEIGHT / 2), + Vec2(render.WIDTH - 125, render.HEIGHT / 2), Vec2(44, 250), - Vec2(0.5), + Vec2(0, 0.5), ), Solid(), Player2(), @@ -538,11 +538,19 @@ def _update_bot(world: World): player = world.query(Player1).pop() # On trouve l'endroit ou la balle va arriver sur le mur de droite + for entity in world.query(RightWall): + entity[Position].x -= 125 + for entity in world.query(LeftWall): + entity[Position].x += 125 bot.remove(Solid) right_wall_ball = __simulate_wall_position(ball, RightWall) right_touch_height = right_wall_ball[Position].y right_wall_ball.destroy() bot.set(Solid()) + for entity in world.query(RightWall): + entity[Position].x += 125 + for entity in world.query(LeftWall): + entity[Position].x -= 125 # On teste différentes possitions pour voir laquelle la plus éloigné du joueur # Mais seulement si la balle vas vers la droite car sinon elle touchera le mur @@ -551,7 +559,10 @@ def _update_bot(world: World): bot_base_y = bot[Position].y target: float = right_touch_height better_distance = None - for offset in [-100, -50, 0, 50, 100]: + offsets = [-100, -50, 0, 50, 100] + if bot[Scale].y > 250: + offsets = [-200, -100, -50, 0, 50, 100, 200] + for offset in offsets: bot[Position].y = right_touch_height + offset __restrict_to_scene(world) player.remove(Solid)