¿Existe una manera fácil y razonable de implementar el movimiento libre en un juego isométrico basado en fichas? Lo que significa que el jugador no solo saltaría instantáneamente de una casilla a otra o no sería "encajado" a la cuadrícula (por ejemplo, si el movimiento entre las fichas fuera animado pero se le impediría hacer algo antes de que finalice la animación). Soy un principiante con todo lo relacionado con la programación de juegos, pero con la ayuda de este sitio y algunos otros recursos fue bastante fácil hacer las cosas básicas, pero no he podido encontrar recursos útiles para este problema en particular. .
Actualmente he improvisado algo parecido a esto: http://jsfiddle.net/KwW5b/4/ (movimiento WASD). La idea para el movimiento era usar el mapa del mouse para detectar cuándo el jugador se movió a un mosaico diferente y luego voltear los desplazamientos, y en su mayor parte funciona correctamente (cada esquina hace que el jugador se mueva a una ubicación incorrecta: consulte http: //www.youtube.com/watch?v=0xr15IaOhrI , lo que probablemente se deba a que no pude hacer que el mapa completo del mouse funcionara correctamente), pero no me hago ilusiones de que esté cerca de una solución buena / sensata. Y de todos modos, es principalmente para demostrar qué tipo de cosa me gustaría implementar.
fuente
Respuestas:
En primer lugar, le sugiero que cambie las direcciones de: W - arriba-izquierda S - abajo-derecha A - abajo-izquierda D - arriba-derecha
en más intuitivo: W - arriba S - abajo A - izquierda D - derecha
En cuanto a su preocupación, le sugiero que realice dos funciones, una que traduzca las coordenadas de los mosaicos isométricos en coordenadas de cuadrícula, y la segunda al revés. De esa manera, simplemente podría separar MVC y le facilitaría la vida al calcular el mosaico activo:
fuente
Si entiendo, quieres que el jugador mueva mosaico a mosaico pero sin saltar. Usted puede:
1- Comience con el mosaico t0 y el desplazamiento 0
2- Cuando el jugador se mueve al mosaico t1, establece el desplazamiento = - (t1 - t0)
3- En la actualización del reproductor, si el desplazamiento no es 0, disminuya utilizando el tiempo de actualización y la velocidad del jugador.
4- Yo puede usar el desplazamiento == 0 para saber cuándo el jugador está en el mosaico.
Con esto obtienes un jugador que se mueve libremente en el mapa pero se adhiere a las fichas.
fuente