Creación de Videojuegos. Godot Engine. Colisiones TileMap

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:

Editamos el Tileset. Godot
Editamos el Tileset. Godot

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)

Colisión de TileSet en Godot
Colisión de TileSet en Godot

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

Seleccionamos colisión tipo Rectángulo. Godot
Seleccionamos colisión tipo Rectángulo. Godot

y vamos marcando cada uno de los TileSet:

Marcamos cada uno de los TileSet. Godot
Marcamos cada uno de los TileSet. Godot

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.

El personaje colisiona con los Tiles que hemos añadido. Godot.
El personaje colisiona con los Tiles que hemos añadido. Godot.

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:

Tiles en forma de triángulo. Godot
Tiles en forma de triángulo. Godot

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

Tiles individuales en formato png. Godot
Tiles individuales en formato png. Godot

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:

Seleccionamos el tile desde Region Godot
Seleccionamos el tile desde Region Godot
Seleccionamos Colisión y marcamos el área cuadrada. Godot
Seleccionamos Colisión y marcamos el área cuadrada. Godot

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:

Nodo TileMap -> Propiedad TileSet -> Editar . Godot
Nodo TileMap -> Propiedad TileSet -> Editar . Godot

y escogemos una imagen que sea triangular:

Imagen triangular. Godot
Imagen triangular. Godot

Le decimos que es un +Nuevo Tile Individual

+Nuevo Tile Individual. Godot
+Nuevo Tile Individual. Godot

Seleccionamos toda la Región pero la Colisión la definimos de tipo Nuevo Polígono:

Definimos que sea de tipo Nuevo Polígono.Godot
Definimos que sea de tipo Nuevo Polígono.Godot

y definimos con el ratón punto a punto, los vértices del triángulo hasta formar el área triangular:

Definimos con el ratón punto a punto, los vértices del triángulo hasta formar el área triangular. Godot
Definimos con el ratón punto a punto, los vértices del triángulo hasta formar el área triangular. Godot

Ahora hacemos Click en el Nodo TileMap y dibujamos nuestra escena con los Tiles que hemos creado:

Escena con Tiles en forma de triángulo y con colisión. Godot
Escena con Tiles en forma de triángulo y con colisión. Godot

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 rectángulos más pequeños. Godot
Seleccionamos rectángulos más pequeños. Godot

Seleccionamos Colisión Nuevo Polígono y Activamos la Opción Mantener el polígono dentro del region Rect:

Mantener el polígono dentro del region Rect. Godot
Mantener el polígono dentro del region Rect. Godot

Para trabajar mejor, podemos ampliar el zoom y marcamos solo las áreas de la imagen que representan el puente:

Podemos ampliar el zoom y marcamos solo las áreas de la imagen. Godot
Podemos ampliar el zoom y marcamos solo las áreas de la imagen. Godot

Y observamos su comportamiento:

Personaje sobre un puente. Godot
Personaje sobre un puente. Godot

El personaje camina por la plataforma.

El personaje salta y se golpea con el puente. Godot
El personaje salta y se golpea con el puente. Godot

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.


ÍNDICE


0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x