Réglage du suicide de l'IA #24
|
@ -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
|
||||
|
||||
|
|
|
@ -263,9 +263,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(),
|
||||
|
@ -281,9 +281,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(),
|
||||
|
@ -537,11 +537,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
|
||||
|
@ -550,7 +558,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)
|
||||
|
|
Loading…
Reference in a new issue