Corregir física de rebotes: solo pérdida, nunca ganancia de energía

🔧 Problema corregido:
- BOUNCE_VARIATION_PERCENT permitía rebotes con ganancia de energía (0.95-1.05)
- Pelotas podían rebotar más alto que su posición inicial (violaba física)

 Cambios aplicados:
- Renombrado: BOUNCE_VARIATION_PERCENT → BOUNCE_RANDOM_LOSS_PERCENT
- Valor aumentado: 0.05f (5%) → 0.1f (10%) para mayor variabilidad
- Lógica corregida: rango 0.90-1.00 (solo pérdida, nunca ganancia)
- Comentarios actualizados para claridad semántica

📊 Impacto físico:
- Antes: 0.75 × (0.95-1.05) = 0.7125-0.7875  (ganancia posible)
- Después: 0.75 × (0.90-1.00) = 0.675-0.750  (solo pérdida)

🎯 Resultado: Física realista - las pelotas siempre pierden energía en rebotes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-18 17:46:07 +02:00
parent 19e1c414c2
commit e15c1f5349
2 changed files with 6 additions and 6 deletions

View File

@@ -7,11 +7,11 @@
#include "defines.h" // for BALL_SIZE, Color, SCREEN_HEIGHT, GRAVITY_FORCE
class Texture;
// Función auxiliar para generar variación aleatoria en rebotes
// Función auxiliar para generar pérdida aleatoria en rebotes
float generateBounceVariation() {
// Genera un valor entre -BOUNCE_VARIATION_PERCENT y +BOUNCE_VARIATION_PERCENT
float variation = ((rand() % 1000) / 1000.0f - 0.5f) * 2.0f * BOUNCE_VARIATION_PERCENT;
return 1.0f + variation; // Retorna multiplicador (ej: 0.95 - 1.05 para ±5%)
// Genera un valor entre 0 y BOUNCE_RANDOM_LOSS_PERCENT (solo pérdida adicional)
float loss = (rand() % 1000) / 1000.0f * BOUNCE_RANDOM_LOSS_PERCENT;
return 1.0f - loss; // Retorna multiplicador (ej: 0.90 - 1.00 para 10% max pérdida)
}
// Función auxiliar para generar pérdida lateral aleatoria