Vamos a crear un sistema básico de combate del estilo JRPG o Pokemon, es decir, un sistema de combate por turnos.
Usaremos una nueva escena donde enfrentaremos contra nuestro personaje a los objetos enemigos que ya tenemos. Diseñaremos un menú de acciones para atacar y crearemos toda la lógica necesaria para la base de nuestro combate, así podrás extenderla con tus propios añadidos, si quieres.
Además, dejaremos un detallito final en el combate: los enemigos podrán soltar oro u otros ítems cuando los venzamos, los cuales podrás usar después para comprar mejoras. Donde podemos ver todo el material será desde el archivo llamado ProyectoFinal Sistema de combate.
Lo primero que haremos será crear una nueva escena la cual llamaremos Combat
Ahora desde la escena Town pondremos un elemento que nos permita entrar en esta nueva escena. Colocaremos esta entrada en la posición marcada en la imágen
Dentro de la jerarquía de la escena Town tenemos un grupo de objetos llamado Exits que son las salidas de nuestra escena hacía a otras. En este caso tenemos creado un elemento llamado ExitCombat
Desde el Inspector tenemos la siguiente configuración
Para abrir la ventana de Build Settings recordamos que es desde File>Build Settings
Ahora desde la carpeta de los Scriptable Objects>Scenes creamos un dato u scriptable Object llamado Combat
Abrimos la escena llamada Combat y nos encontraremos con esta organización en su Jerarquía:
El levelInitializer tendrá la siguiente configuración en la ventana del Inspector
Desde la carpeta de ScriptableObjects>GameManager crearemos un objeto scriptable que llamamos Combat
Este objeto tendremos que configurarlo también en la carpeta de Scripts>Utils>GameStateListener
Abrimos dicho script y dentro de sus líneas de código escribiremos: public UnityEvent OnCombatState
El menú de combate lo tenemos hecho en la carpeta de los prefabs>Menus>CombatMenu
Se nos cargará dicho menu una vez que iniciemos el juego y nos aparecerá en la ventana de Jerarquía
Dentro del menú nos encontramos con los siguientes botones y canvas:
Tenemos un botón de pausa que está configurado de la siguiente manera:
Luego tenemos un objeto padre llamado Combat HUD que contiene un contenedor, dos HUD uno para el enemigo y otro para el player. HUD: presentar información relevante mientras se juega.
Si abrimos el objeto BottomContainer es donde se almacena nuestro equipo dentro del juego y se muestra tal y como vemos en la siguiente imágen