¿Cómo coordinar la posición gráfica y lógica en un juego basado en mosaicos 2D usando una matriz?

Estoy programando un juego basado en mosaicos 2D en Java como Bomberman (mi primer juego).

Utilizo una matriz 2D para representar el mapa donde realizo un seguimiento de las paredes, los espacios transitables, etc. A estas alturas pude hacer que el jugador se mueva suavemente intercambiando sprites dependiendo de la tecla de dirección que presiona (pero no interactúa con el fondo / mapa, puede caminar al azar y salir de la pantalla).

Mi problema viene cuando quiero hacer un seguimiento de la posición del jugador en la matriz. Lógicamente, el personaje siempre pertenece a una sola ficha, pero gráficamente puede estar entre dos fichas. ¿Cómo puedo resolver este problema?

Ya intenté esto:

currentTileArrayX = x / tileWidth;

currentTileArrayY = y / tileHeight;

Donde xey son las coordenadas superior izquierda del sprite. Pero todo se volvió muy problemático porque los sprites del jugador no son del mismo tamaño que las fichas.

Tenía otra opción en mente que resolvería el problema anterior: cuando el jugador presiona una tecla de dirección, mueve el personaje a la siguiente ficha. como una animación. Esto no permitiría que el jugador se detuviera en medio de dos fichas ... ¿Pero qué pasa si lo interrumpe presionando otra tecla? ¿Cómo puedo detener la acción del usuario mientras se ejecuta la animación? Creo que esta es la solución más fácil pero no sé cómo implementarla.

Ya intenté encontrar la solución en otras preguntas pero no tuve suerte. Espero que puedas ayudarme.

Muchas gracias.

5
задан Rama 10 August 2011 в 07:18
поделиться