Y el enemy position haremos lo mismo que hicimos para el player position. Arrastraremos el objeto enemy position que está en la jerarquía al recuadro de enemie position de la configuración del CombatTrigger dentro del LevelInitializer.
Nos faltaría crear el canal de eventos. Y para eso nos vamos al menu superior horizontal y donde pone Window elegimos la opción de SO Code Generation.
Dentro marcaremos las opciones de Game Event y Event Listener. En la cajita del Type Name tenemos que usar lo que queremos que es CombatRequest para que nos cree los eventos necesrios con nuestro tipo de dato custom mientras que en la cajita del Menu Name pondremos Combat Request.
Una vez que lo tengamos creado ya podremos irnos a la carpeta de Scriptable Objects>Events y desde ahí pulsar el botón derecho y seleccionar del desplegable la opción de Create>GameEvents>-Combat Request.
Le llamaremos CombatRequestGameEvent.
Así que nos volvemos de nuevo a LevelInitializer.
Y desde el canal de eventos(Broadcasting events) le decimos que coja el CombatRequestGameEvent que acabamos de crear. Juego
Solo nos queda un detalle el Combat Manager ahora mismo no está escuchando eventos así que lo abrimos desde la ventana de jerarquía y en el inspector añadiremos un componente SO architecture>EventListener>CombatRequest
Le decimos el canal de eventos que tiene que usar en la opción de Event>CombatRequestGameEvent
Y en la opción Response (CombatRequest) es decir en la acción. Añadimos una dependencia pulsando en el +
Seleccionamos y arrastramos el componente de Combat Manager a la cajita de información del Response
Y luego dentro de las funciones seleccionamos CombatManager>SetupCombat
Ya con esto guardamos lo que ya es Gameplay con el comando Ctrl+S o Cmd+S. Salimos de aquí pulsando en los tres puntos que se encuentra a su derecha y la quitamos eligiendo la opción Remove SceneJuego
Importante dentro de la configuración del LevelInitializer en la opción de On Dependecies Loaded añadiremos una acción pulsando en + donde le vamos a decir que cuando inicie la escena se mande el Combat Trigger y que en sus funciones coja Combat Trigger> TriggerCombat
Guardamos nuestros cambios y ahora vamos a configurar el botón que hace posible que nuestro player ataque y para eso nos venimos Assets>Scenes>Gameplay
Lo abrimos y desde la ventana de jerarquía buscamos el componente Ability Button
Lo seleccionamos y nos vamos al inspector para configurarlo. Dentro de sus opciones nos vamos al OnClick y le damos al +
Arrastramos el CombatManager a la cajita donde pone None(Object)
Y dentro de las funciones elegimos CombatManager>OnPlayerAttack
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.