Tema 13. Godot Engine. Colisiones TileMap. Colisiones con polígonos.
Una vez creados los TileMap, crearemos la colisión de cada uno de ellos para que nuestro personaje pueda colisionar de la misma forma que lo haría con un cuerpo estático.
Para ello, seleccionamos el Nodo TileMap y Editamos de nuevo el TileSet:
Ahora seleccionamos de nuevo el TileSet: (si no aparecen los botonesRegion,Colision,Oclusión etc … haremos Click sobre la imagen izquierda y veremos todas las opciones)
Para la colisión seleccionamos el botón Colisión y vamos marcando celda a celda la colisión de cada Tile. Para ello seleccionamos el cuadro Nuevo Rectángulo…
y vamos marcando cada uno de los TileSet:
Las colisiones que hemos definido también pueden borrarse. La seleccionamos y pulsamos el botón Borrar (Papelera).
Si hacemos Play en el proyecto observamos que en los Tiles en que hemos añadido colisión, el jugador la detecta correctamente y se sitúa encima del Tile sin caer. Hemos creado plataformas a partir de Tiles. Si activamos el modo Debug observamos que se muestra la colisión.
A partir de ahora usaremos TileMap para realizar las colisiones y dejaremos de lado los cuerpos rígidos, empleados más para opciones de física.
COLISIONES CON POLÍGONOS |
No todos los Tiles van a ser cuadrados o rectangulares, esto quiere decir, que su colisión no tiene por qué ser de tipo cuadro. También podemos definir colisiones con polígonos.
Si nos fijamos en los Tiles, observaremos que hay Tiles que no son cuadrados o rectangulares. Hay Tiles triangulares o con diversas formas poligonales:
Para este ejemplo vamos a crear los Tiles de forma individual. Al hacerlos de forma individual obtenemos una precisión del 100%.
Para ello hacemos Nodo TileMap -> Propiedad TileSet -> Editar y hacemos un Click en el + de la parte inferior:
Seleccionamos una única imagen .png de nuestra carpeta Recursos y le decimos que será un +Nuevo Tile Individual
Vamos a Región y lo seleccionamos todo.
Ahora vamos a Colisión y seleccionamos todo:
En este ejemplo tenemos dos Tiles de forma cuadrada:
Pero como hemos dicho al inicio, no todos los Tiles van a ser cuadrados o rectangulares.
Ahora hacemos Click en el Nodo TileMap -> Propiedad TileSet -> Editar
y hacemos un Click en el + de la parte inferior:
y escogemos una imagen que sea triangular:
Le decimos que es un +Nuevo Tile Individual
Seleccionamos toda la Región pero la Colisión la definimos de tipo Nuevo Polígono:
y definimos con el ratón punto a punto, los vértices del triángulo hasta formar el área triangular:
Ahora hacemos Click en el Nodo TileMap y dibujamos nuestra escena con los Tiles que hemos creado:
Ahora si probamos el proyecto, veremos como el jugador colisiona con los TileMap tanto cuadrados como triangulares, respetando las áreas definidas por la colisión.
También podemos seleccionar rectángulos más pequeños y hacer lo mismo con la colisión.
Seleccionamos Colisión Nuevo Polígono y Activamos la Opción Mantener el polígono dentro del region Rect:
Para trabajar mejor, podemos ampliar el zoom y marcamos solo las áreas de la imagen que representan el puente:
Y observamos su comportamiento:
El personaje camina por la plataforma.
Al saltar, colisiona la cabeza con el puente.
Anotación: solo si usamos Tilesheets, en nuestro ejemplo no ocurre porque hemos usado Tiles individuales
Es posible que si usamos tilesheets aparecen unas rayas en los bordes de la imagen en pantalla. Por ello se aconseja desactivar el filtro en la configuración de la importación de los Tilesets. Desmarcamos Filter On.