Estoy trabajando en un juego basado en una cuadrícula isométrica y tengo un problema al intentar vincular un clic del mouse del usuario a un mosaico. He podido dividir el problema en 2 partes:
- Encontrar un rectángulo que rodea un mosaico (que he podido hacer)
- Averiguando desde el rectángulo en qué mosaico aterrizó el clic (me tiene perplejo)
Aquí hay un ejemplo de un rectángulo con mosaicos en el interior:
El rectángulo tiene 70 px de largo y 30 px de alto, así que si uso una entrada de digamos 30x (arriba) / 20y (izquierda), ¿cómo determinaría en qué mosaico cayó?
Respuestas:
Por cada paso que realice en la dirección x, se moverá 35 píxeles hacia la izquierda y -15 píxeles hasta su lienzo;
Por cada paso que realice en la dirección y, moverá -35px a la izquierda y -15px hacia su lienzo;
Esto significa que puede convertir su sistema de coordenadas de mosaico fácilmente en píxeles:
(x, y) => (35 · x, -15 · x) + (-35 · y, -15 · y) = (35 · x - 35 · y, -15 · x - 15 · y) = ( Xpx, Ypx)
Debe resolver el problema inverso que conoce Xpx e Ypx y desea saber x e y (en coordenadas de mosaico).
Xpx = 35 · x - 35 · y;
Ypx = -15 · x - 15 · y;
¿Puedes resolver esto? Debería ser:
x = 1/70 · Xpx - 1/30 · Ypx
y = -1 / 70 · Xpx - 1/30 · Ypx
Obviamente, tendrá valores no enteros en el caso general: tomar el techo de x e y le dará la coordenada de todo el mosaico.
fuente