diff --git a/src/engine/camera.py b/src/engine/camera.py index aa3a09a..9be655f 100644 --- a/src/engine/camera.py +++ b/src/engine/camera.py @@ -7,6 +7,9 @@ class Camera: self.y = 0 self.zoom = 1. + # Décalage lors du mouvement du joueur + self.player_moving_offset = 100 + # Variables utilisées pour le scrolling self.target_x = self.x self.target_y = self.y @@ -21,8 +24,10 @@ class Camera: # Si on suit une entité, on met à jour les coordonnées de suivi if self.followed_entity is not None: - self.target_x = self.followed_entity.x - self.target_y = self.followed_entity.y + self.target_x = (self.followed_entity.x + self.followed_entity.mouvements[0] * + self.player_moving_offset / self.zoom) + self.target_y = (self.followed_entity.y + self.followed_entity.mouvements[1] * + self.player_moving_offset / self.zoom) self.x += (self.target_x - self.x) / self.smoothness self.y += (self.target_y - self.y) / self.smoothness diff --git a/src/engine/entity.py b/src/engine/entity.py index 9b71a35..3fe10dd 100644 --- a/src/engine/entity.py +++ b/src/engine/entity.py @@ -10,6 +10,12 @@ class Entity: self.x = 8 self.y = 8 + # Variables utilisées pour detecter les mouvements + self.last_x = 0 + self.last_y = 0 + + self.mouvements = [0., 0.] + self.max_speed = 1. self.life_points = -1 @@ -42,6 +48,14 @@ class Entity: if self.damage_cooldown < 0: self.damage_cooldown = 0 + # Si les coordonnées ont changé, l'entité a bougé + + self.mouvements[0] = (self.x - self.last_x) / self.max_speed + self.mouvements[1] = (self.y - self.last_y) / self.max_speed + + self.last_x = self.x + self.last_y = self.y + def take_damages(self, damages: int): """Inflige {damages} dégâts à l'entité."""