Mover un personaje con el ratón es una tarea que, aunque parezca sencilla, requiere un enfoque cuidadoso para lograr un movimiento suave y controlado. En lugar de hacer que el personaje se teletransporte instantáneamente al punto donde hacemos clic, queremos que se desplace de forma natural, recorriendo el camino en un tiempo finito. Para conseguir esto, podemos apoyarnos en un sistema basado en estados y en el cálculo de velocidades.
Imaginemos que nuestro personaje está en una posición inicial con coordenadas PX y PI (para el eje X y el eje Y, respectivamente). Cuando hacemos clic en la pantalla, definimos un punto destino con coordenadas DX y DY. El objetivo es que el personaje se mueva desde su posición actual hasta ese destino, siguiendo un movimiento rectilíneo uniforme.
Para controlar este proceso, introducimos un semáforo con dos estados: stop y mueve. Cuando el semáforo está en stop, el personaje permanece quieto. Al hacer clic, el semáforo cambia a mueve, y el sistema comienza a desplazar al personaje hacia el destino. Una vez que el personaje llega a DX, DY, el semáforo vuelve a stop y el movimiento se detiene.
El cálculo de la velocidad es clave para que el desplazamiento sea uniforme y se complete en un tiempo determinado, que llamaremos T. La fórmula básica que utilizamos es la del movimiento rectilíneo uniforme:
S = S₀ + V × T
Aquí, S es la posición final, S₀ la posición inicial, V la velocidad y T el tiempo transcurrido. Despejando la velocidad, obtenemos:
V = (S - S₀) / T
Aplicando esto a cada coordenada, calculamos las velocidades en X y Y:
VX = (DX - OX) / T;
VY = (DY - OI) / T;
Donde OX y OI son las coordenadas de origen (posición inicial del personaje), y DX y DY las del destino.
Una vez calculadas las velocidades, en cada actualización del juego (por ejemplo, en el método update), incrementamos la posición del personaje sumando la velocidad multiplicada por el tiempo transcurrido desde la última actualización (delta), que suele estar en milisegundos. Así, las nuevas posiciones se calculan como:
PX += VX * delta / 1000.0;
PI += VY * delta / 1000.0;
Este proceso se repite continuamente mientras el semáforo esté en mueve. Cuando detectamos que el personaje ha alcanzado o superado la posición destino (es decir, cuando PX es igual o mayor que DX y PI igual o mayor que DY, considerando la dirección del movimiento), cambiamos el semáforo a stop para detener el movimiento.
Además, cada vez que hacemos un nuevo clic, actualizamos el origen a la posición actual del personaje y el destino a la nueva posición clicada, recalculando las velocidades para iniciar un nuevo desplazamiento.
Este método sencillo nos permite controlar el movimiento del personaje con el ratón de forma fluida y predecible, sin complicarnos con algoritmos complejos de búsqueda de rutas. Más adelante, podremos combinar esta base con técnicas avanzadas para que el personaje navegue por escenarios más complejos, pero por ahora, este sistema de semáforo y cálculo de velocidad es una excelente forma de empezar a mover personajes con clics en pantalla.