Hemos visto cómo mapear nuestro nivel. Ahora necesitamos agregarle más jugo, permitiendo que algunos de nuestros tiles actúen como verdaderas colisiones.

En otras versiones de Godot, lo que se solía hacer es tal como dijimos antes, crear una escena con muchos Sprites (que servirá como tileset), y luego le añadíamos cuerpos de colisión estáticos. Algo muy importante en ese aspecto, era que la figura de colisión debía ser perfecta, es decir, encajar exactamente en una grilla para no pasarse a la otra ni por un milímetro. Esto lo lograbas con las herramientas de snap o autoajuste, ya que de esa forma, mientras estabas dándole forma a tu figura, se podía autoajustar a la grilla.

No es que hoy día no podamos hacer todo eso, pero Godot 4 trae una nueva facilidad que nos puede llegar a ahorrar todo ese dolor de cabeza.


Lo primero que tenemos que hacer, es teniendo seleccionado nuestro TileMap, en el Inspector clickeamos en “Add Element” en nuestro “Physics Layers” (Capas Físicas). Allí podremos elegir con qué capas del juego colisionarán nuestros tiles.


¿Qué quiero decir con capas? Bueno, en nuestro juego podemos tener distintas capas de colisión. Esto sirve para que, por ejemplo, el jugador pueda colisionar contra el suelo y contra otros enemigos, pero no contra sus propias balas (si es que dispara proyectiles). Otro ejemplo, para que los enemigos no colisionen entre sí, pero que puedan colisionar contra otros objetos. Entonces a cada objeto se le puede configurar la capa con la que colisiona.

Esto puedes experimentarlo, pero lo dejaremos por default en la capa 1, ya que no es lo que nos importa tratar. Todos los elementos del juego, actuarán en la capa 1 por default.


Ahora, vamos a seleccionar en el panel inferior, nuestro TileSet, para trabajar especificando cuáles van a ser los tiles o imágenes de nuestra plantilla, que presenten colisión trabajando en esta capa.

En este caso, seleccionarlos, sería "pintarlos" con este atributo. Para eso vamos al sub panel “Paint” (pintar), y entre las propiedades a pintar, elegimos el Physics Layer que acabamos de crear.


Luego, vamos a ir “pintando” (clickeando uno a uno), los tiles en el panel de la derecha, para asignarles esta propiedad. Por ejemplo, yo le he asignado colisión a los tiles de esta casa, excepto a la puerta la cual no actuará como colisión ya que quiero que el personaje pueda avanzar hacia ella.


Si diera el caso que no quieres que una colisión ocupe todo el tile, sino una parte del mismo, puedes modificar las dimensiones de la colisión. Esto lo haces en el panel central, donde acabas de establecer que usarás la propiedad para pintar.


Ya sé. No es algo de todos los días que quieras modificar la forma de tu colisión, ya que siendo cuadrada estará bien, pero bueno… existen casos en los que puede serte útil. Nunca está de más saberlo.

También en el TileMap, puedes crear o nombrar tus propias capas, desde la propiedad en el Inspector llamada “Layers”. De esta forma, podrías asignar una para suelos, otra para muros, etc.


Extraído de mi libro "La Bibllia de Godot (Nivel 1)", el cual podes encontrar clickeando en la siguiente imagen: