TEMA 9 SISTEMA DE COMBATE (continuación)

Sin valoraciones

TEMA 9 SISTEMA DE COMBATE

Mientras que el Player y el Enemy contienen un Text Mesh Pro y un panel de Hp que a su vez contiene un texto y un slider. El Slider es un componente que se encuentra cuando creamos un UI que lo que hace es deslizarse de izquierda a derecha

TEMA 9 SISTEMA DE COMBATE

TEMA 9 SISTEMA DE COMBATE

Esta es su representación gráfica:

TEMA 9 SISTEMA DE COMBATE

Dentro de la configuración del componente Slider nos permite meter un valor Minimo, un valor Maximo y un valor Actúal que es representado con la barra verde de la imágen anterior

TEMA 9 SISTEMA DE COMBATE

Dentro del MainPanel tenemos:

TEMA 9 SISTEMA DE COMBATE

TEMA 9 SISTEMA DE COMBATE

El funcionamiento de este sistema de combate es el siguiente. Nuestro jugador cuando entré en esta escena. Y esta escena va a tener un combatManager que lo que va a hacer es empezar a instanciar enemigos, es decir a colocar dentro de la escena enemigos, y va a contar como que has entrado en el nivel 1 si vencemos al enemigo pasaremos al nivel 2 y nos irá dando oro cada vez que avancemos de nivel. Si nuestro jugador no muere en esta cadena infinita de enemigos siempre aparecerá un menú cada vez que venza, ese menú es este:

TEMA 9 SISTEMA DE COMBATE

Si pierde el jugador en el proceso del combate nos aparecerá está pantalla y se perderá todo el oro ganado. Tendrás dos opciones o volver al Menú principal o a la escena Town pero sin el oro que había ganado el jugador

TEMA 9 SISTEMA DE COMBATE

El esquema del sistema de combate vamos a usar un SO(Scriptable Object) que es CombatUnit aquí es dónde vamos a definir los datos, es decir separar los datos de la lógica de lo que son las unidades. Pueden ser las unidades del enemigo, las unidades del player guardaremos lo que es su vida. Y después vamos a utilizar un componente que se llama el Combat Trigger que basicamente va a lanzar un evento que volveremos a crear y aquí dentro irá un Combat Request. Esto se hace porque el CombatManager está en otra escena, está en el Gameplay y necesita saber varias cosas, por un lado necesita saber los CombatUnitSO son varios datos, es decir necesita saber cual es el player y cúal el enemigo y después necesita saber las posiciones, donde situar sus prefabs. Al estar en escenas diferentes se lo tenemos que pasar a través de ese Request. El esquema es tal como aparecen en esta imagen

TEMA 9 SISTEMA DE COMBATE

Después dentro de la escena Gameplay vamos a necesitar un CombatManager que va a estar escuchando el evento de CombatRequest y le va a hablar al CombatUI. Es decir vamos a separar la vista de la lógica y va a estar hablando con este elemento que se llama CombatUi pero no sabe lo que hace por detrás. Le hablará cada vez que necesite de algo y el CombatUI hará lo que tenga que hacer en pantall.

En total tendremos 5 componentes nuevos que los encontraremos en la carpeta de material llamado ProyectoFinal Sistema de combate estarán dentro de las carpetas de Managers y Utils

TEMA 9 SISTEMA DE COMBATE

Si abrimos el script de CombatUnitSO nos encontramos con las siguientes líneas de código:

TEMA 9 SISTEMA DE COMBATE

Es basicamente nuestro scriptable object(objeto programable) sobre el que trabajaremos el enemigo y el player para contener los datos de los mismos. Tiene el nombre de la unidad en si:

TEMA 9 SISTEMA DE COMBATE

Que la mostraremos en el HUD

Tenemos luego otra variable llamada baseHP, hp son los health point que son los puntos de vida que tiene nuestro player. Esta variable será la base sobre la que nuestro jugador mejorará es decir los puntos iniciales de vida con los que empieza.

TEMA 9 SISTEMA DE COMBATE

Cada nivel multiplicara el maxHP de los enemigos. Pero necesitamos resetearlo con el base cada vez que pasamos de nivel

TEMA 9 SISTEMA DE COMBATE

El currentHP es el valor actual de la vida de nuestro player o del enemigo

TEMA 9 SISTEMA DE COMBATE

Estas dos variables son temporales, la idea es que podamos añadir más poderes a nuestro juego. Ahora mismo le estamos asignando un poder de ataque y un poder de cura.

TEMA 9 SISTEMA DE COMBATE

Y después el prefab, el propio scriptable object va tener el prefab del enemigo o del player. Cuando le pasemos este dato al CombatManager, este va a instanciarlo dentro de la escena

TEMA 9 SISTEMA DE COMBATE

Luego tenemos la siguiente lógica dentro de este scriptable object que tiene que ver con el ataque que se hará tanto al player como al enemigo dentro del juego. La lógica está relacionada con la unidad de combate. Es atacar a otra unidad de combate:

TEMA 9 SISTEMA DE COMBATE

Tomar algún daño, es decir ser dañado a traves de un mensaje de otra unidad de comabate

TEMA 9 SISTEMA DE COMBATE

Curarte con algo de vida

TEMA 9 SISTEMA DE COMBATE

Resetear tu HP, tu currentHP(tu HP actual) ponerlo al máximo

TEMA 9 SISTEMA DE COMBATE

Ademas aquí le estamos diciendo que desactive el valor maximo de HP al valor base. Veremos más adelante como configurarlo.

TEMA 9 SISTEMA DE COMBATE

 

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