Proyecto Nirvash (Parte 2)

En la primera parte comenté que estaba desarrollando un RPG con Pygame (Python y SDL).

Hasta ahora tenía a un personaje animado que se podía mover por un mapa (una simple imagen) en 8 direcciones y con un movimiento por píxel. Vamos a repasar las novedades.

Novedades

Dije que el siguiente paso era conseguir que hubiese scroll (vamos, que la "cámara" siga al personaje según este se mueve) y que el personaje no se saliese de los bordes. Eso es lo que hice:

En el vídeo se puede ver que el personaje no se sale del mapa. Tuve problemas con el movimiento en diagonal hacia los bordes y esquinas, pero lo solucioné, da igual como se mueva el personaje, si se topa con el borde no se saldrá.

Además también se puede apreciar el scroll (00:07 del vídeo) aunque muy poquito, porque no me di cuenta de que también tenía que mostrarlo. X_x

Siguiente etapa

Llegados a este punto, tenía dos posibles caminos:

  • Mostrar NPCs en el mapa (y que se muevan por su cuenta).
  • Meterme a fondo con el mapa, las capas, profundidades, bloqueos y detección de colisiones.

Problemas

Me puse a hacer pruebas con el mapa, tenía que pensar cómo podía hacer que el personaje no pudiese atravesar algunas zonas del mapa (como el agua, la casa o el acantilado), y caí en la cuenta de que era bastante complicado.

La idea sería tener una copia de la imagen del mapa y pintar en color negro los píxels que no se pueden pisar, de modo que si el personaje pisa un pixel x,y del mapa, habría que comprobar en la copia de la imagen a ver si este píxel es negro o no.

El hecho de comprobar (a cada movimiento) a ver si los píxels que forman el personaje colisionan con píxels del mapeado es bastante complicado, e incluso podría haber problemas cuando el movimiento es hacia arriba (los píxels de la cabeza del personaje colisionarían con otros y no se movería, cuando en principio los que interesan son los de los pies.

Para solucionarlo he estado modificando toda la parte del mapa, voy a hacerlo por tiles, de manera que el personaje podrá pisar o no el tile. El movimiento seguirá siendo por píxel si no hay ningún problema.

Conclusión

Tengo que rehacer la base de lo que tenía ya hecho, así que pronto habrá una tercera parte en la que explicaré cómo queda finalmente el asunto del mapa y el movimiento.