diff --git a/source/core/defaults/physics.hpp b/source/core/defaults/physics.hpp index f6f5dad..0d415eb 100644 --- a/source/core/defaults/physics.hpp +++ b/source/core/defaults/physics.hpp @@ -15,7 +15,7 @@ namespace Defaults::Physics { // un factor de transferència [0..1]. 1.0 = transfereix tot el moment // (col·lisió perfectament inelàstica), 0.5 = transfereix la meitat. namespace Bullet { - constexpr float IMPACT_MOMENTUM_FACTOR = 1.0F; // Factor de transferència de moment bala→enemic + constexpr float IMPACT_MOMENTUM_FACTOR = 2.0F; // Factor de transferència de moment bala→enemic } // namespace Bullet // Explosions (debris physics) diff --git a/source/game/entities/enemy.cpp b/source/game/entities/enemy.cpp index d531a12..c0626be 100644 --- a/source/game/entities/enemy.cpp +++ b/source/game/entities/enemy.cpp @@ -201,17 +201,21 @@ void Enemy::update(float delta_time) { brightness_ = START + ((END - START) * SMOOTH_T); } - // Comportamiento por tipo (ajusta body_.velocity, NO mueve posición) - switch (type_) { - case EnemyType::PENTAGON: - behaviorPentagon(delta_time); - break; - case EnemyType::QUADRAT: - behaviorQuadrat(delta_time); - break; - case EnemyType::MOLINILLO: - behaviorMolinillo(delta_time); - break; + // Comportamiento por tipo (ajusta body_.velocity, NO mueve posición). + // Skip cuando está herido: el enemy és un "cos mort" inert, només + // respon a la inèrcia del impulse rebut i a les col·lisions físiques. + if (!isWounded()) { + switch (type_) { + case EnemyType::PENTAGON: + behaviorPentagon(delta_time); + break; + case EnemyType::QUADRAT: + behaviorQuadrat(delta_time); + break; + case EnemyType::MOLINILLO: + behaviorMolinillo(delta_time); + break; + } } // Animaciones (palpitación + rotación acelerada)