TEMA 9 SISTEMA DE COMBATE (continuación)

Sin valoraciones

TEMA 9 SISTEMA DE COMBATE (continuación)

El combatTrigger lo unico que hace es lanzar un combate, un TriggerCombat y lo escuchará un canal de eventos. El canal de eventos lo que tiene es un combatRequest y el TriggerCombat lo crea y hace un raise

TEMA 9 SISTEMA DE COMBATE (continuación)

El combatRequest lo que va a tener es la unidad y la posición del player

TEMA 9 SISTEMA DE COMBATE (continuación)

Despues un array de enemigos, ¿por qué un array de enemigos? Porqué nosotros si queremos podemos hacer que aparezca un solo enemigo que multiplicará infinitamente cada vez que pases de nivel o si queremos podemos pasarle un array de enemigos con sus prefabs que pueden ir aleatoriamente poniendose en el escenario cada vez que cambiemos de nivel. Y después la posición del enemigo

Con el combatRequest listo el combatTrigger va a hacer a través de un canal va a lanzar un evento con esos datos de este último script

TEMA 9 SISTEMA DE COMBATE (continuación)

El siguiente script es la pantalla en si de nuestro sistema de combate, es decir la interfaz donde se verá el resultado de nuestras acciones dentro del juego.

TEMA 9 SISTEMA DE COMBATE (continuación)

Aunque el código parece muy largo en realidad tiene poca cosa en él. Lo primero serían las dependencias que corresponden a cada parte de los menu de combate dentro de nuestra escena. Tiene los diferentes menus que componen el sistema como el menu de combate, el de ganar o el de perder. También tiene los textos de cada sección

TEMA 9 SISTEMA DE COMBATE (continuación)

También el HUD del enemigo o del player ya que necesita saber donde está toda esa información. En las siguientes líneas de código guardamos la información que nos pasan del combatManager

TEMA 9 SISTEMA DE COMBATE (continuación)

También el HUD del enemigo o del player ya que necesita saber donde está toda esa información. En las siguientes líneas de código guardamos la información que nos pasan del combatManager, con la función Update. Tanto la información del HP del player como el del enemigo

TEMA 9 SISTEMA DE COMBATE (continuación)

Cada vez que se ejecuta el update nosotros estamos mirando a nuestro scriptable object y si ese valor cambia no tenemos que hacer nada, se actualiza el slider en todo momento, el slider la barra de vida tanto del player como del enemigo.

Por otro lado tenemos una serie de métodos públicos dentro de nuestro código, el primero es SetupHUD

TEMA 9 SISTEMA DE COMBATE (continuación)

Este método lo que hace es guardar las referencias que nos pasan del player, el enemigo, el level actual y el gold(el oro que ganamos en el juego)

Este script lo único que hace es mostrarnos en pantalla los objetos a los que llaman los otros scripts que si tienen lógica. Luego lo único que le pone es el máximo valor y el minimo valor a las unidades y un texto que corresponde al nombre del player y al nombre del enemigo

TEMA 9 SISTEMA DE COMBATE (continuación)

Y luego el levelText y el goldText que los pone como una cadena de caracteres(ToString) para que cuando le pasen el número del nivel y el oro que tiene el personaje pueda verse como un texto.

Luego leemos un método público llamado SetInfoText que lo que hace es que desde el combatManager cuando quiera setear en la cajita de información alguna frase lo hace a través de este método

TEMA 9 SISTEMA DE COMBATE (continuación)

Luego vienen tres métodos útiles que son muestra en pantalla el combate, muestra en pantalla el menú de ganar el combate y muestra la pantalla del menú has perdido. Lo único que hacen es activar y desactivar paneles y cuando gana nuestro player tenemos que pasarle el oro que llevas ganado. Ya que cuando gana el player nos aparece en pantalla el número de oros que ha ganado y una serie de botones de elección de objetos a usar en nuestro combate

TEMA 9 SISTEMA DE COMBATE (continuación)

El último método dentro de nuestro código es el ResetHUD que lo que hace es ponerlo todo a cero a nulo y sin strings

TEMA 9 SISTEMA DE COMBATE (continuación)

Ahora vamos a ver lo que hace funcionar el sistema de combate de nuestro escena de Combat. La lógica de este sistema. El combatManager:

TEMA 9 SISTEMA DE COMBATE (continuación)

Cuando nosotros en los anteriores temas creabamos desde el menu proyecto los llamados estados en programación se les llama enumerados o enum. Los enumerados basicamente son una lista de valores. Y entonces podemos crearlos también en forma de código usando un enum:

TEMA 9 SISTEMA DE COMBATE (continuación)

Entre corchetes ponemos los valores del enumerado, es decir de la lista, que en este caso tienen que ver con los estados de combate. Que el estado del combate puede pasar por todos estos valores que hay en dicha lista.

Recordamos que el gameManager podía estar en loading, en pausa, podía estar en playing pues aquí funciona exactamente igual. El CombatState puede estar en None, en Start, Playerturn, etc.

Esto nos servirá porque dentro de CombatManager vamos a tener una variable privada que es de tipo CombatStates la cual llamamos combatState y empieza en None pero según vaya evolucionando el combate vamos a poder seleccionar que coja otro valor que está dentro del enumerado.

TEMA 9 SISTEMA DE COMBATE (continuación)

Y para coger uno de los valores tenemos que escribir el nombre del enumerado punto el valor que queremos que represente. En este caso es None pero podriamos poner cualquiera de los valores de la lista.

Tenemos también el header llamado Combat Configuration donde tenemos una serie de variables de tipo int(numeros enteros) y tipo float(numeros decimales). En el caso de la variable int es el numero inicial con el que parte nuestro player de oro cuando gana de base.

Luego se pone cuanto va a incrementar el precio de las monedas de oro cuando subamos de nivel en este caso se ha puesto que un 20%, la siguiente variable publica es el incremento de dificultad por cada nivel y por último la timeBetweenActions es un tiempo entre acciones esto solo es para poner los mensajes dentro.

TEMA 9 SISTEMA DE COMBATE (continuación)

La configuración de los mensajes es la siguiente:

TEMA 9 SISTEMA DE COMBATE (continuación)

Las dependencias son el combatUI que acabamos de ver

TEMA 9 SISTEMA DE COMBATE (continuación)

Por dentro estamos manteniendo un track del estado del combate, el nivel que empieza en 1 siempre y la cantidad de oro inicial que es en 0

TEMA 9 SISTEMA DE COMBATE (continuación)

 

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.

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER