diff --git a/src/engine/entity.py b/src/engine/entity.py index 3fe10dd..ec9b457 100644 --- a/src/engine/entity.py +++ b/src/engine/entity.py @@ -97,9 +97,15 @@ class Entity: def move(self, x: float, y: float, map_manager: MapManager): """Fait bouger l'entité en tenant compte des collisions.""" + # On normalise la vitesse + initial_speed = math.sqrt(x**2+y**2) + + x = x/initial_speed*self.max_speed + y = y/initial_speed*self.max_speed + # On simule le mouvement. Si on ne rencontre pas de collision, on applique le mouvement if not self.get_collisions(self.x + x, self.y, map_manager): - final_x = x + self.x += x else: # Si on a une collision, on avance pixel par pixel jusqu'à atteindre la collision i = 0 @@ -112,11 +118,11 @@ class Entity: i -= 1 i += 1 - final_x = i + self.x += i # On répète le procédé avec l'ordonnée if not self.get_collisions(self.x, self.y + y, map_manager): - final_y = y + self.y += y else: i = 0 if y > 0: @@ -128,16 +134,8 @@ class Entity: i -= 1 i += 1 - final_y = i + self.y += i - # On normalise le vecteur x, y pour ne pas dépacer la vitesse maximale de l'entité - - total_len = math.sqrt(final_x**2+final_y**2) - if total_len == 0.: - return - - self.x += final_x/total_len*self.max_speed - self.y += final_y/total_len*self.max_speed def link_animation(self, name: str): """Met à jour l'animation en cours de l'entité."""