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:
@@ -7,11 +7,11 @@
|
|||||||
#include "defines.h" // for BALL_SIZE, Color, SCREEN_HEIGHT, GRAVITY_FORCE
|
#include "defines.h" // for BALL_SIZE, Color, SCREEN_HEIGHT, GRAVITY_FORCE
|
||||||
class Texture;
|
class Texture;
|
||||||
|
|
||||||
// Función auxiliar para generar variación aleatoria en rebotes
|
// Función auxiliar para generar pérdida aleatoria en rebotes
|
||||||
float generateBounceVariation() {
|
float generateBounceVariation() {
|
||||||
// Genera un valor entre -BOUNCE_VARIATION_PERCENT y +BOUNCE_VARIATION_PERCENT
|
// Genera un valor entre 0 y BOUNCE_RANDOM_LOSS_PERCENT (solo pérdida adicional)
|
||||||
float variation = ((rand() % 1000) / 1000.0f - 0.5f) * 2.0f * BOUNCE_VARIATION_PERCENT;
|
float loss = (rand() % 1000) / 1000.0f * BOUNCE_RANDOM_LOSS_PERCENT;
|
||||||
return 1.0f + variation; // Retorna multiplicador (ej: 0.95 - 1.05 para ±5%)
|
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
|
// Función auxiliar para generar pérdida lateral aleatoria
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ constexpr float GRAVITY_FORCE = 0.2f;
|
|||||||
// DEMO_SPEED eliminado - ya no se usa con delta time
|
// DEMO_SPEED eliminado - ya no se usa con delta time
|
||||||
constexpr Uint64 TEXT_DURATION = 2000;
|
constexpr Uint64 TEXT_DURATION = 2000;
|
||||||
|
|
||||||
// Configuración de variación aleatoria en rebotes
|
// Configuración de pérdida aleatoria en rebotes
|
||||||
constexpr float BASE_BOUNCE_COEFFICIENT = 0.75f; // Coeficiente base IGUAL para todas las pelotas
|
constexpr float BASE_BOUNCE_COEFFICIENT = 0.75f; // Coeficiente base IGUAL para todas las pelotas
|
||||||
constexpr float BOUNCE_VARIATION_PERCENT = 0.05f; // ±5% variación en cada rebote
|
constexpr float BOUNCE_RANDOM_LOSS_PERCENT = 0.1f; // 0-10% pérdida adicional aleatoria en cada rebote
|
||||||
constexpr float LATERAL_LOSS_PERCENT = 0.02f; // ±2% pérdida lateral en rebotes
|
constexpr float LATERAL_LOSS_PERCENT = 0.02f; // ±2% pérdida lateral en rebotes
|
||||||
|
|
||||||
struct Color {
|
struct Color {
|
||||||
|
|||||||
Reference in New Issue
Block a user