He escrito una clase de view_port para un juego de estrategia en 2D. La toma panorámica (con las teclas de flecha) y zoom (con la rueda del ratón) funciona bien, pero me gustaría la opinión de que también casa hacia donde se coloca el cursor, como en Google Maps or Supreme CommanderZoom hacia el mouse (por ej., Google maps)
Me ahorraré los detalles de cómo se implementa el zoom e incluso qué idioma estoy usando: esto es irrelevante. Lo importante es la función de zoom, que modifica la estructura del rectángulo (x, y, w, h) que representa la vista. Hasta ahora, el código es el siguiente:
void zoom(float delta, float mouse_x, float mouse_y)
{
zoom += delta;
view.w = window.w/zoom;
view.h = window.h/zoom;
// view.x = ???
// view.y = ???
}
Antes de que alguien sugiere que, a continuación se hará no trabajo:
view.x = mouse_x - view.w/2;
view.y = mouse_y - view.h/2;
Esta imagen ilustra por qué, mientras intento hacer un zoom hacia la cara sonriente:
Como se puede ver cuando el objeto debajo del ratón se coloca en t El centro de la pantalla deja de estar debajo del mouse, ¡así que dejamos de acercarnos a él!
Si tienes una cabeza para las matemáticas (necesitarás una) ¡cualquier ayuda en esto sería muy apreciada!
¿Podría explicar en detalle qué significan las variables? – WebF0x