Implementar zoom por profundidad Z con perspectiva 3D + toggle
NUEVAS CARACTERÍSTICAS: - Zoom por profundidad Z: Escala sprites según distancia (0.5x-1.5x) - Toggle con Numpad / (KP_DIVIDE) para activar/desactivar perspectiva - Fix transición figura→física: Reset automático de depth_scale a 1.0 - Texto informativo: "DEPTH ZOOM ON/OFF" IMPLEMENTACIÓN TÉCNICA: - Ball class: Nueva variable depth_scale_ (0.5-1.5) - Ball class: Getters/setters getDepthScale() / setDepthScale() - Engine::addSpriteToBatch(): Parámetro scale con valor defecto 1.0 - Engine::addSpriteToBatch(): Cálculo de vértices escalados centrados - Engine::updateShape(): Cálculo depth_scale = 0.5 + z_normalized * 1.0 - Engine::render(): Pasa depth_scale al batch en modo SHAPE - Engine::toggleShapeMode(): Reset depth_scale en salida de figura - Engine: Variable depth_zoom_enabled_ (true por defecto) - Batch rendering: Mantiene performance (sin llamadas individuales) EFECTO VISUAL: - Pelotas lejanas (Z-): Pequeñas (50%) y oscuras - Pelotas medias (Z=0): Normales (100%) y brillo medio - Pelotas cercanas (Z+): Grandes (150%) y brillantes - Perspectiva 3D realista combinada con Z-sorting CONTROLES: - Numpad /: Toggle zoom por profundidad (solo en modo SHAPE) - Por defecto: ACTIVADO para máximo realismo 3D README ACTUALIZADO: - Añadida tecla KP_/ a tabla de controles - Actualizada sección "Características Técnicas" - Añadida línea "Zoom por profundidad" en características - Actualizada sección "Uso" con control de perspectiva 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,7 @@ class Ball {
|
||||
float pos_3d_x_, pos_3d_y_, pos_3d_z_; // Posición 3D en la esfera
|
||||
float target_x_, target_y_; // Posición destino 2D (proyección)
|
||||
float depth_brightness_; // Brillo según profundidad Z (0.0-1.0)
|
||||
float depth_scale_; // Escala según profundidad Z (0.5-1.5)
|
||||
bool rotoball_attraction_active_; // ¿Está siendo atraída hacia la esfera?
|
||||
|
||||
public:
|
||||
@@ -82,6 +83,8 @@ class Ball {
|
||||
void setRotoBallScreenPosition(float x, float y); // Establecer posición directa en pantalla
|
||||
void setDepthBrightness(float brightness);
|
||||
float getDepthBrightness() const { return depth_brightness_; }
|
||||
void setDepthScale(float scale);
|
||||
float getDepthScale() const { return depth_scale_; }
|
||||
|
||||
// Sistema de atracción física hacia esfera RotoBall
|
||||
void enableRotoBallAttraction(bool enable);
|
||||
|
||||
Reference in New Issue
Block a user