Las siguientes líneas de código vamos a guardar la petición que nos hacen que nos va a llegar a través del canal de eventos de CombatRequest la guardaremos porque ahí hay mucha información que nos hace falta, vamos a guardar también el currentEnemy porque irá cambiando según vayamos dandole a siguiente, siguiente y el GameObject que es el enemigo puesto en la escena.
Aquí se guardaran los métodos para combate siguiente y resetear combate
En el SetupCombat guardamos la request que nos llega, reseteamos el HP del player al máximo. Nos va a llegar el evento desde el sceneInitializer entonces reseteara lo que es el player al máximo. Situará al player en su posición y empezará el combate
El NextCombat lo que hará es que empiece el nivel en 1 y luego empezar el combate
El Reset Combat reseteara el nivel en 1 y dejara el oro en 0
OnPlayerAttack es un evento público, porque cuando pulsemos los botones necesitamos saber que el player ha tocado el botón. El manager necesita saber que el player ha atacado. Le estamos diciendo que player ataque a la unidad del enemy. Le va a quitar la vida que sea y si hemos visto que el enemigo está muerto hará que empiece la corrutina de que ha ganado el combate sino es el turno del enemigo
Lo que es el combate en si es el StartCombat. Luego tenemos el turno del player y luego el turno del enemigo:
Luego tenemos Combate ganado y Combate perdido:
Ahora para construir nuestro sistema de combate deberemos arrastrar nuestra escena Gameplay a la ventana de Jerarquía dentro de la escena de Combat
Creamos un nuevo objeto. Botón derecho>Create>Empty Object y lo llamamos CombatManager
Desde la ventana del inspector le añadimos el componente Combat Manager
Dentro está esperando el CombatUI y para eso desde la ventana de jerarquía buscaremos la opción Canvas>CombatMenu y la abriremos dentro del inspector
Una vez abierto el CombatMenu añadiremos el componente CombatUI
Nos añadirá esta serie de opciones que deberemos configurar para que funcione. Para ello deberemos dejarlo tal como aparece en la imágen de la derecha. Tendremos que buscar los
componentes desde el desplegable de Canvas>CombatMenu dentro de nuestra ventana de Jerarquía
Y en el CombatManager le tenemos que decir que en la opción del Combat Ui arrastrar el objeto CombatMenu
Ahora si nos venimos a donde tenemos CombatMenu y lo activamos nos encontramos con las siguientes opciones a configurar
Y el otro botón es el de continuar, que ahora configuraremosJuego
Desarrollar un sistema de combate en Unity implica la implementación de mecánicas específicas para el combate, como la detección de colisiones, la gestión de la salud del jugador/enemigo, la animación y otros elementos relacionados:
1. Crear el Personaje/Enemigo:
1.1. Modelo 3D/2D: Importa o crea los modelos para tu personaje y enemigo.
2. Implementar la Salud:
2.1. Scripts de Salud:
- Crea un script para gestionar la salud (
HealthController
). - Controla la cantidad de salud y actualiza la interfaz de usuario (UI).
2.2. Colisiones:
- Usa colliders para detectar colisiones entre el jugador y los enemigos.
3. Controlar el Combate:
3.1. Scripts de Combate:
- Crea un script para gestionar las acciones de combate (
CombatController
). - Implementa métodos para atacar y recibir daño.
3.2. Animaciones:
- Asocia animaciones al combate.
- Utiliza el sistema de animación de Unity para cambiar entre estados de animación (atacar, recibir daño, etc.).
4. Input del Jugador:
4.1. Entrada de Teclado/Ratón:
- Implementa scripts para manejar la entrada del jugador (teclas, clics, etc.).
- Asigna acciones a los controles, como atacar, bloquear, etc.
5. Enemigos:
5.1. IA del Enemigo:
- Implementa una lógica simple para el comportamiento del enemigo (seguir al jugador, atacar, etc.).
- Utiliza la inteligencia artificial o patrones de diseño para gestionar la toma de decisiones del enemigo.
6. Interfaz de Usuario (UI):
6.1. Barra de Salud:
- Crea una barra de salud que refleje el estado actual del jugador/enemigo.
7. Sonido y Efectos Visuales:
7.1. Sonidos:
- Asocia efectos de sonido a las acciones de combate.
7.2. Partículas y Efectos Visuales:
- Agrega partículas y efectos visuales para realzar la experiencia de combate.
8. Optimización y Pulido:
8.1. Optimización:
- Optimiza el código para un rendimiento eficiente.
8.2. Pulido:
- Añade detalles adicionales, como transiciones suaves entre animaciones, retroalimentación háptica, etc.
9. Pruebas:
9.1. Pruebas de Jugabilidad:
- Realiza pruebas exhaustivas para garantizar un combate fluido y sin errores.