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
|
||||
// (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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user