From acca81131121b107b42ca39ce0f8373f95724c06 Mon Sep 17 00:00:00 2001 From: yannis300307 Date: Fri, 29 Dec 2023 19:31:16 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20d=C3=A9calage=20de=20la=20cam?= =?UTF-8?q?=C3=A9ra=20lors=20du=20d=C3=A9placement=20du=20joueur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/engine/camera.py | 9 +++++++-- src/engine/entity.py | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) 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é."""