tune(enemy): més empenta + cos inert quan està herit
- IMPACT_MOMENTUM_FACTOR: 1.0 → 2.0 (doble del moment de la bala). Pentagon Δv = 140 px/s (≈4× la seva velocity base), prou clar. - Enemy::update: salta el switch de behavior (Pentagon zigzag, Quadrat tracking, Molinillo proximity-spin) mentre wounded_timer_>0. El enemic herit és un "cos mort" inert: només respon a la inèrcia del impulse rebut i a les col·lisions físiques resoltes per PhysicsWorld. Abans, el Quadrat renormalitzava la velocity cada 1s cap al ship, esborrant la inèrcia. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Defaults::Physics {
|
|||||||
// un factor de transferència [0..1]. 1.0 = transfereix tot el moment
|
// un factor de transferència [0..1]. 1.0 = transfereix tot el moment
|
||||||
// (col·lisió perfectament inelàstica), 0.5 = transfereix la meitat.
|
// (col·lisió perfectament inelàstica), 0.5 = transfereix la meitat.
|
||||||
namespace Bullet {
|
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
|
} // namespace Bullet
|
||||||
|
|
||||||
// Explosions (debris physics)
|
// Explosions (debris physics)
|
||||||
|
|||||||
@@ -201,17 +201,21 @@ void Enemy::update(float delta_time) {
|
|||||||
brightness_ = START + ((END - START) * SMOOTH_T);
|
brightness_ = START + ((END - START) * SMOOTH_T);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comportamiento por tipo (ajusta body_.velocity, NO mueve posición)
|
// Comportamiento por tipo (ajusta body_.velocity, NO mueve posición).
|
||||||
switch (type_) {
|
// Skip cuando está herido: el enemy és un "cos mort" inert, només
|
||||||
case EnemyType::PENTAGON:
|
// respon a la inèrcia del impulse rebut i a les col·lisions físiques.
|
||||||
behaviorPentagon(delta_time);
|
if (!isWounded()) {
|
||||||
break;
|
switch (type_) {
|
||||||
case EnemyType::QUADRAT:
|
case EnemyType::PENTAGON:
|
||||||
behaviorQuadrat(delta_time);
|
behaviorPentagon(delta_time);
|
||||||
break;
|
break;
|
||||||
case EnemyType::MOLINILLO:
|
case EnemyType::QUADRAT:
|
||||||
behaviorMolinillo(delta_time);
|
behaviorQuadrat(delta_time);
|
||||||
break;
|
break;
|
||||||
|
case EnemyType::MOLINILLO:
|
||||||
|
behaviorMolinillo(delta_time);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Animaciones (palpitación + rotación acelerada)
|
// Animaciones (palpitación + rotación acelerada)
|
||||||
|
|||||||
Reference in New Issue
Block a user