Creación de Videojuegos. Godot Engine. Capas. Plataformas y bordes.

Tema 14. Capas. Plataformas y bordes.

Ahora vamos a definir un nuevo Tileset pero sin establecer colisión. En este ejemplo añadimos un TileSet azul con un candado.

Añadimos un TileSet con un candado. Godot
Añadimos un TileSet con un candado. Godot

Si hacemos Play, y nos ponemos delante del candado, al saltar observamos que el personaje está situado por detrás del candado.

El personaje se sitúa por detrás del candado. Godot

Es decir, la capa del candado está por delante del personaje. Godot usa un sistema de profundidad o capas. 

Si queremos que esto no suceda tendremos que ordenar los Nodos.

Ordenamos los Nodos en la ventana de Escenas. Godot.
Ordenamos los Nodos en la ventana de Escenas. Godot.

 y reordenar el Nodo TileMap por encima del Nodo Player.

Cambiamos el orden de los Nodos. Godot.
Cambiamos el orden de los Nodos. Godot.
El personaje se sitúa por detrás del candado. Godot

Este método se realizará correctamente usando propiedades ya que es posible que queramos que ciertos objetos del TileMap están por encima o por debajo del personaje.

PLATAFORMAS Y BORDES

Los videojuegos de plataformas, o simplemente plataformas, son juegos que se caracterizan por tener que caminar, correr, saltar o subir sobre una serie de plataformas, con enemigos, mientras se recogen objetos para poder completar el juego. Estos videojuegos suelen usar vistas de desplazamiento horizontal hacia la izquierda o hacia la derecha. Es un género muy popular de videojuegos y que sigue manteniendo bastante popularidad en la actualidad. Para que un personaje se mueva correctamente sobre una plataforma será muy importante ajustar las colisiones entre el personaje y las plataformas para que cuando el personaje se sitúe sobre una plataforma lo haga como si estuviera sobre una superficie real. Si no ajustamos bien las colisiones, y el sprite del personaje no toca bien la plataforma parecerá que flote sobre ella y el juego no quedará bien diseñado.

Para terminar diseñando un juego de plataformas es necesario ajustar bien las colisiones con el diseño de cada Tile.

Vamos a diseñar una escena completa e iremos creando las colisiones según el tipo de Tile que usemos.

Vamos a diseñar una plataforma como la que vemos a continuación:

Plataforma en Godot.
Plataforma en Godot.

Fijarse como se ha creado la colisión del primer Tile: (Habría que quitar uno de los puntos de la parte superior izquierda)

Colisión de Tiles usando polígonos.
Colisión de Tiles usando polígonos.

Si tenemos activada la opción Mantener el polígono dentro del región Rect, podemos ir dibujando de punto a punto las rectas delimitadoras de las colisiones.

Opción Mantener el polígono dentro del región Rect. Godot
Opción Mantener el polígono dentro del región Rect. Godot

Hacemos los mismo en el Tile izquierdo:

Opción Mantener el polígono dentro del región Rect. Tile Izquierdo Godot
Opción Mantener el polígono dentro del región Rect. Tile Izquierdo Godot

Y para el Tile Medio, solo basta con seleccionar el área superior del Tile sin necesidad de seleccionarlo todo. Todo dependerá de lo que vaya a hacer o por donde puede o no pasar nuestro personaje.

Seleccionamos el área superior del Tile sin necesidad de seleccionarlo todo. Godot.
Seleccionamos el área superior del Tile sin necesidad de seleccionarlo todo. Godot.

Es posible que hayamos ajustado tanto la colisión de los Tiles que el personaje parece que flote sobre éstos. Si ocurre, podemos solucionarlo de dos formas, bajamos un poco la colisión del Tile (afectará a todos los Tiles del mismo tipo en el escenario) o bien ajustamos la Colisión en el mismo personaje.

Personaje sobre la plataforma. Godot
Personaje sobre la plataforma. Sin ajustar la Colisión. Godot

En este ejemplo se ajusta la Colisión del personaje:

Personaje sobre la plataforma. Se ajusta la Colisión. Godot
Personaje sobre la plataforma. Se ajusta la Colisión. Godot

Í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