SerÃa interesante programar que si el enemigo detecte al usuario lo persiga.
Creo que todo esto es lo más básico de inteligencia artificial.
Introducción
Game Design del juego
La estructura y assets de un proyecto en Unity
Convirtiendo nuestros assets en Tiles
Tilemaps y creación del escenario
Bonus: FastForward de la creación del escenario, sorting layers y creación de colliders
Acá encontrarás los archivos de este curso
Personaje principal: Movimiento y Animaciones
El jugador y el movimiento
Creando nuestra primera animación
Creando el grafo de animaciones
Usando un árbol de animaciones
Mostrando la solución del desafÃo e implementando transición entre blended trees
Programando una cámara que siga al jugador
Corrección del bug gráfico
lÃmites del escenario, rigid bodies
Ejercicio: diseño de interiores
Escenarios Avanzados
Transiciones entre escenas
Mantener Player y Camera entre escenas
Spawning Points: programando que el jugador y la cámara aparezcan en el lugar correcto al cambiar de escena
Agregando Identificadores a nuestros Spawning Points para controlar mejor el flujo de nuestro juego
Enemigos Avanzados
Creando nuestro enemigo
Programando las fÃsicas y el patrullaje del enemigo
Generando movimiento completamente aleatorio
Programando el ataque del enemigo
Crear Manager de Health del Player
Crear armas
Programando el ataque del Player con arma
Mover la espada al caminar
Creando el ataque con espada
Ejecutando el ataque con un botón
Movimiento en diagonal
Optimizando nuestro player controller
Ataque mejorado
Uso de partÃculas
Añadir el daño del enemigo en batalla
Programando los contadores de vida del enemigo
Colocando más info de UI en pantalla
Script de la vida
Personaje principal avanzado
Añadir el daño del personaje (ejercicio)
Sistema de puntos de experiencia para nuestro personaje principal
Level Up!
Level Up! Defensa y Reto Final del Módulo: Stats de los enemigos
Creando un NPC
Limitar el movimiento de nuestro NPC
Creando una pantalla de diálogos para nuestro RPG
El diálogo del NPC
Múltiples lÃneas de diálogo
Parar el NPC durante el diálogo
Parar el personaje durante el diálogo
Quests
La estructura de una quest
Quest 1: Ir a un lugar
Quest 2: Encontrar un objeto
Quest 3: Matar enemigos
Revisión de bugs
Mantener la cámara dentro del escenario
El problema al cambiar de escena
Audio
Agregando SFX a nuestro videojuego
Agregando música a nuestro videojuego
Ajustar volúmen del audio de cada uno de los efectos de sonido
Creando un VolumeManager
Agregando economÃa a nuestro juego y cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Al desarrollar videojuegos, es crucial ajustar el comportamiento de los enemigos para mejorar la jugabilidad. Uno de los problemas observados es que los enemigos no se mueven hacia arriba ni hacia la derecha. Para solucionar esto, es esencial entender primero cómo opera la función Random.Range
.
Cuando se usa Random.Range(-1, 2)
, se debe tener en cuenta que este método excluye el último valor. Por lo tanto, si buscas incluir los valores -1, 0 y 1, es necesario establecer el segundo parámetro en 2. Este ajuste garantiza que los enemigos puedan moverse en múltiples direcciones, añadiendo diversidad a su comportamiento.
int movimiento = Random.Range(-1, 2); // Este rango incluye -1, 0 y 1
Incluir pequeñas variaciones aleatorias en el tiempo de movimiento de los enemigos ayuda a evitar que se sincronicen, creando una experiencia más realista y desafiante para el jugador. Para lograrlo, se pueden multiplicar los atributos TimeBetweenSteps
y TimeToMakeStep
por un factor aleatorio.
TimeBetweenSteps: multiplicar por un Random.Range(0.5f, 1.5f)
para que el paso ocurra en diferentes intervalos.
TimeToMakeStep: también multiplicarlo por un Random.Range(0.5f, 1.5f)
para permitir variaciones en la duración del paso.
timeBetweenSteps *= Random.Range(0.5f, 1.5f); timeToMakeStep *= Random.Range(0.5f, 1.5f);
Este enfoque sencillo del game design no solo aporta dinamismo, sino también evita comportamientos predecibles, manteniendo al jugador en un constante estado de anticipación.
Al trabajar con múltiples enemigos en una escena, es importante organizarlos de manera eficiente para mantener el orden y facilitar el trabajo futuro. Una práctica común es utilizar prefabs para clonar enemigos y agruparlos bajo un GameObject vacÃo.
Esta organización asegura que tu jerarquÃa se mantenga limpia y ordenada, permitiéndote continuar trabajando con facilidad.
Para que los enemigos interactúen adecuadamente con los elementos del ambiente, es fundamental asignarles una capa adecuada. Por ejemplo, al colocar la misma capa que el jugador, asegurarás que ambos reaccionen de forma similar a las colisiones y otros efectos.
gameObject.layer = LayerMask.NameToLayer("Player");
Siguiendo estas recomendaciones, podrás desarrollar enemigos que no solo mejoren su jugabilidad, sino que también enriquezcan tu videojuego mediante un diseño cuidado y errores mÃnimos.
Aportes 4
Preguntas 0
SerÃa interesante programar que si el enemigo detecte al usuario lo persiga.
Creo que todo esto es lo más básico de inteligencia artificial.
Excelente !
yo he programado en Unreal, como tiene blueprints se me hace más facil de hacer la inteligencia artificial y ps uno de las formas más faciles de detección es un trigger, pero ellos tienen componente de vista y de captura de sonido, pero se me hace facil tambien aca en Unity
Genial
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?