Début de collisions : détection des tiles qui touchent l'entité

This commit is contained in:
Yannis 2023-12-23 15:23:30 +01:00
parent a49543cc46
commit 08848740c4
2 changed files with 13 additions and 2 deletions

View file

@ -55,6 +55,8 @@ class Engine:
self.renderer.update() self.renderer.update()
self.event_handler.update() self.event_handler.update()
self.entity_manager.get_by_name("player").move(0, 0, self.map_manager) # TODO : REMOVE !
def stop(self): def stop(self):
"""Arrête le programme.""" """Arrête le programme."""
self.running = False self.running = False

View file

@ -3,11 +3,12 @@ from src.map_manager import MapManager
class Entity: class Entity:
"""Classe permettant de gérer les entités. Créée automatiquement par `EntityManager.register_entity()`""" """Classe permettant de gérer les entités. Créée automatiquement par `EntityManager.register_entity()`"""
def __init__(self, name: str): def __init__(self, name: str):
self.x = 8 self.x = 8
self.y = 8 self.y = 8
self.collision_rect = [-7, -7, 7, 7] # x1, y1, x2, y2 self.collision_rect = [-7, -7, 20, 20] # x1, y1, x2, y2
# Time utilisé pour les IA # Time utilisé pour les IA
self.time = 0 self.time = 0
@ -27,9 +28,17 @@ class Entity:
# Pour les collisions, on utilise le layer 1 (le deuxième) # Pour les collisions, on utilise le layer 1 (le deuxième)
top_left_corner_tile = map_manager.get_tile_at(self.x+x-self.collision_rect[0], self.y+y-self.collision_rect[1]) top_left_corner_tile = (int((self.x + x + self.collision_rect[0]) / 16),
int((self.y + y + self.collision_rect[1]) / 16))
top_right_corner_tile = (int((self.x + x + self.collision_rect[2]) / 16),
int((self.y + y + self.collision_rect[1]) / 16))
bottom_left_corner_tile = (int((self.x + x + self.collision_rect[0]) / 16),
int((self.y + y + self.collision_rect[3]) / 16))
bottom_right_corner_tile = (int((self.x + x + self.collision_rect[2]) / 16),
int((self.y + y + self.collision_rect[3]) / 16))
print(top_left_corner_tile, top_right_corner_tile, bottom_left_corner_tile, bottom_right_corner_tile)
def link_animation(self, name: str): def link_animation(self, name: str):
self.animation_name = name self.animation_name = name