Limitation de la vitesse des entités dans les diagonales
This commit is contained in:
parent
a0fefc0a06
commit
2b4582e8b4
|
@ -1,3 +1,5 @@
|
||||||
|
import math
|
||||||
|
|
||||||
from src.engine.map_manager import MapManager
|
from src.engine.map_manager import MapManager
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,6 +10,8 @@ class Entity:
|
||||||
self.x = 8
|
self.x = 8
|
||||||
self.y = 8
|
self.y = 8
|
||||||
|
|
||||||
|
self.max_speed = 1.
|
||||||
|
|
||||||
self.life_points = -1
|
self.life_points = -1
|
||||||
self.max_life_points = -1
|
self.max_life_points = -1
|
||||||
|
|
||||||
|
@ -81,7 +85,7 @@ class Entity:
|
||||||
|
|
||||||
# On simule le mouvement. Si on ne rencontre pas de collision, on applique le mouvement
|
# 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):
|
if not self.get_collisions(self.x + x, self.y, map_manager):
|
||||||
self.x += x
|
final_x = x
|
||||||
else:
|
else:
|
||||||
# Si on a une collision, on avance pixel par pixel jusqu'à atteindre la collision
|
# Si on a une collision, on avance pixel par pixel jusqu'à atteindre la collision
|
||||||
i = 0
|
i = 0
|
||||||
|
@ -94,11 +98,11 @@ class Entity:
|
||||||
i -= 1
|
i -= 1
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
self.x += i
|
final_x = i
|
||||||
|
|
||||||
# On répète le procédé avec l'ordonnée
|
# On répète le procédé avec l'ordonnée
|
||||||
if not self.get_collisions(self.x, self.y + y, map_manager):
|
if not self.get_collisions(self.x, self.y + y, map_manager):
|
||||||
self.y += y
|
final_y = y
|
||||||
else:
|
else:
|
||||||
i = 0
|
i = 0
|
||||||
if y > 0:
|
if y > 0:
|
||||||
|
@ -110,7 +114,16 @@ class Entity:
|
||||||
i -= 1
|
i -= 1
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
self.y += i
|
final_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):
|
def link_animation(self, name: str):
|
||||||
"""Met à jour l'animation en cours de l'entité."""
|
"""Met à jour l'animation en cours de l'entité."""
|
||||||
|
|
Loading…
Reference in a new issue