Cómo hacer un NPC enemigo que persiga y ataque en Roblox Studio

Captura de pantalla 2026 09 19 221726
Descubre todo lo que te espera aquí.
  1. Guía básica de NPC enemigo en Roblox Studio
  2. ¿Cómo detecta el NPC al jugador más cercano?
  3. ¿Cómo hace el NPC para perseguir al jugador sin trabarse?
  4. ¿Cuándo y cómo debe atacar el NPC enemigo?
  5. ¿Cómo evitar errores y mejorar el rendimiento del NPC?
  6. Quieres saber sobre este juego

Crear enemigos que persigan y ataquen al jugador es una de las mecánicas más emocionantes en Roblox Studio. Con scripts de inteligencia artificial básica, puedes lograr que un NPC detecte la posición del personaje, se mueva hacia él y ejecute ataques de forma autónoma. Esto añade desafío y realismo a cualquier experiencia.

Para implementarlo, necesitarás dominar conceptos como PathfindingService, eventos de toque y variables de estado. Además, ajustar la velocidad y el daño hará que el comportamiento sea equilibrado. A continuación, te explicamos paso a paso cómo construir este sistema desde cero.

Te puede interesar leer: WeldConstraint en Roblox Studio: cómo unir piezas para que no se caigan

Guía básica de NPC enemigo en Roblox Studio

Captura de pantalla 2026 09 19 221947

¿Qué es un NPC enemigo y cómo funciona?

Un NPC enemigo es un personaje que el servidor controla en lugar del jugador, y que actúa por su cuenta siguiendo unas reglas que tú programas. El ciclo es siempre el mismo: detecta al jugador más cercano, se desplaza hacia él y le inflige daño cuando lo tiene a tiro. Para funcionar necesita un modelo con Humanoid, un script de comportamiento y algún sistema que le permita saber dónde está su objetivo.

Componentes esenciales del NPC

Antes de escribir una línea de código conviene tener el modelo bien montado, porque si falta alguna pieza el script no funcionará por mucho que esté bien escrito. Estos son los elementos imprescindibles.

Componente Función Obligatorio
Humanoid Permite el movimiento y gestiona la salud Sí
HumanoidRootPart Centro de posición y de físicas Sí
Script de servidor Controla la persecución y el ataque Sí
Animator Reproduce las animaciones del NPC Recomendado

Primeros pasos en Roblox Studio

La forma más rápida de empezar es duplicar un personaje ya existente o insertar un modelo de NPC desde la Toolbox, ya que así te aseguras de que tenga todas las piezas. Después coloca un Script dentro del modelo y arranca con lo básico: recorrer la lista de jugadores y quedarte con el más cercano. A partir de ahí solo queda añadir el movimiento y el ataque.

¿Cómo detecta el NPC al jugador más cercano?

Captura de pantalla 2026 09 19 222124

Métodos de detección disponibles

La detección es el cimiento de todo el comportamiento: sin ella el NPC no sabe hacia dónde ir. El método más común es medir distancias, pero puedes refinarlo comprobando si hay paredes de por medio. Combinar ambos evita que el enemigo te persiga a través de un edificio entero.

  1. Por distancia: Calcula la magnitud entre las posiciones del NPC y de cada jugador para saber quién está más cerca.
  2. Línea de visión: Lanza un Raycast hacia el jugador para confirmar que no hay obstáculos entre ambos.
  3. Por zona: Usa una pieza invisible con el evento Touched para activar la IA solo cuando alguien entra en el área.

Optimización del bucle de detección

Comprobar la posición de todos los jugadores en cada fotograma es un desperdicio absoluto de recursos. Un enemigo no necesita esa precisión: basta con que revise varias veces por segundo. Guardar las referencias fuera del bucle también ahorra bastante trabajo al servidor.

  1. Usar task.wait: Espera entre 0.2 y 0.5 segundos entre comprobaciones, más que suficiente para la persecución.
  2. Filtrar por radio: Descarta de entrada a los jugadores que estén fuera del rango de detección.
  3. Guardar referencias: Declara el Humanoid y el HumanoidRootPart fuera del bucle en lugar de buscarlos cada vuelta.

Errores comunes al detectar

Muchos NPC fallan porque intentan perseguir a personajes que ya no existen, algo habitual cuando un jugador muere o se desconecta a mitad de la persecución. Validar que el objetivo sigue vivo antes de cada acción evita esos errores en la consola. El Raycast también da problemas si no filtras bien.

  1. No comprobar la salud: Verifica que el Humanoid del objetivo exista y tenga vida antes de perseguirlo.
  2. Personaje inexistente: Confirma que el jugador tiene un Character cargado, ya que puede estar reapareciendo.
  3. Raycast mal filtrado: Excluye al propio NPC del filtro o el rayo chocará consigo mismo siempre.

¿Cómo hace el NPC para perseguir al jugador sin trabarse?

Captura de pantalla 2026 09 19 222229

Uso correcto de MoveTo

El método MoveTo es la forma estándar de mover un Humanoid hacia una posición concreta del mapa. La clave está en que hay que llamarlo repetidamente, porque el jugador se mueve y el destino queda obsoleto en segundos. Actualizarlo varias veces por segundo hace que la persecución se sienta fluida.

  1. Actualizar el destino: Llama a MoveTo con la posición actual del jugador cada 0.2 segundos aproximadamente.
  2. Evitar el tiempo de espera: MoveTo se cancela solo tras 8 segundos sin llegar, así que refréscalo antes de ese límite.
  3. Detenerse al llegar: Llama a MoveTo con la posición del propio NPC para frenarlo cuando alcance su objetivo.

Evitar obstáculos y paredes

El Humanoid por sí solo camina en línea recta y se queda atascado en la primera pared. Para que rodee los obstáculos necesitas PathfindingService, que calcula una ruta válida respetando la geometría del mapa. Recorrer esos puntos uno a uno convierte a tu enemigo en algo mucho más inteligente.

  1. Crear la ruta: Genera un objeto de camino con PathfindingService:CreatePath incluyendo los parámetros del agente.
  2. Calcular el trayecto: Usa ComputeAsync desde la posición del NPC hasta la del jugador y comprueba su estado.
  3. Recorrer los waypoints: Mueve al Humanoid punto por punto esperando el evento MoveToFinished entre cada uno.

Control de la velocidad y animaciones

La velocidad del enemigo define por completo la dificultad de tu juego. Si supera al jugador resulta imposible escapar, y si es demasiado lento pierde toda la tensión. Acompañarlo de animaciones de carrera hace que el movimiento no parezca un deslizamiento.

  1. Configurar WalkSpeed: Valores entre 8 y 14 funcionan bien, dejando margen para que el jugador pueda huir.
  2. Cargar animaciones: Usa el Animator del Humanoid para reproducir las pistas de caminar y atacar.
  3. Detener las pistas: Para las animaciones cuando el NPC muera o pierda de vista a su objetivo.

¿Cuándo y cómo debe atacar el NPC enemigo?

Captura de pantalla 2026 09 19 222424

Condiciones para iniciar el ataque

Un enemigo que ataca sin control resulta injusto y frustrante de enfrentar. Debe golpear solo cuando esté realmente cerca, con visión directa y respetando una pausa entre golpes. Ese enfriamiento es lo que hace que el combate se sienta justo.

  1. Distancia mínima: Define un rango corto de unos 5 studs para que solo ataque cuerpo a cuerpo.
  2. Línea de visión: Confirma con un Raycast que no hay ningún muro entre el NPC y el jugador.
  3. Tiempo de enfriamiento: Deja entre 1 y 2 segundos entre golpes usando una variable de control.

Aplicar daño al jugador

El daño siempre debe aplicarse desde el servidor, nunca desde un LocalScript, o cualquiera podría manipularlo. El método TakeDamage es el indicado porque respeta el escudo de fuerza si el jugador acaba de reaparecer. Comprobar que sigue vivo evita errores en cada golpe.

  1. Obtener el Humanoid: Localiza el Humanoid dentro del personaje del jugador antes de hacer nada.
  2. Usar TakeDamage: Aplica el daño con este método en lugar de restar Health directamente.
  3. Verificar el estado: Comprueba que el jugador siga con vida antes de encadenar el siguiente ataque.

Efectos visuales y sonoros del ataque

Los efectos no son decoración: avisan al jugador de que está recibiendo daño. Un sonido de golpe y un destello rojo comunican el peligro mucho mejor que ver bajar un número. Sincronizarlos con la animación hace que el impacto se sienta real.

  1. Reproducir la animación: Lanza la pista de ataque justo antes de aplicar el daño al jugador.
  2. Emitir sonido: Coloca un objeto Sound dentro del NPC y reprodúcelo en el momento del golpe.
  3. Retroalimentación visual: Añade un ParticleEmitter o un destello breve en pantalla al recibir el impacto.

¿Cómo evitar errores y mejorar el rendimiento del NPC?

Captura de pantalla 2026 09 19 222531

Buenas prácticas en el script de IA

Un script mal estructurado provoca lag y comportamientos erráticos incluso con pocos enemigos. Lo fundamental es ejecutarlo siempre en el servidor y guardar las referencias fuera de los bucles. Añadir comprobaciones antes de cada llamada evita la mayoría de errores en la consola.

  1. Variables locales: Guarda el Humanoid y el HumanoidRootPart en variables al inicio del script.
  2. Ejecutar en el servidor: Coloca un Script normal dentro del NPC, nunca un LocalScript.
  3. Comprobar antes de actuar: Verifica que el Humanoid exista y tenga vida antes de llamar a MoveTo.

Reducir el impacto en el rendimiento

Diez enemigos calculando rutas a la vez pueden hundir los fotogramas de un servidor. La solución más eficaz es mantener dormidos a los que están lejos y despertarlos solo cuando un jugador se acerca. Con CollectionService gestionas grupos enteros desde un único script.

  1. Limitar los activos: Mantén un máximo razonable de NPC persiguiendo al mismo tiempo.
  2. Desactivar en la distancia: Pausa la IA de los enemigos que no tengan ningún jugador cerca.
  3. Usar etiquetas: Emplea CollectionService para activar o desactivar grupos completos de NPC de golpe.

Pruebas y depuración

Un NPC que funciona perfecto en solitario puede volverse loco con varios jugadores delante. Probarlo en ambos escenarios revela fallos que de otra forma descubrirían tus usuarios. Los mensajes en la consola te dicen exactamente en qué estado está el enemigo en cada momento.

  1. Prueba en solitario: Comprueba la detección, la persecución y el ataque con un único jugador.
  2. Prueba en multijugador: Verifica que el NPC no cambie de objetivo constantemente entre varios jugadores.
  3. Revisar la consola: Usa print para rastrear el estado del enemigo y localizar dónde falla la lógica.

Quieres saber sobre este juego

¿Cómo hacer que un NPC enemigo detecte y persiga al jugador en Roblox Studio?

Para que un NPC detecte y persiga al jugador, necesitas un Script de servidor dentro del NPC que calcule continuamente la distancia hasta el personaje más cercano y lo mueva hacia él con Humanoid:MoveTo o mediante PathfindingService. El proceso empieza insertando un modelo con su Humanoid y su HumanoidRootPart correctamente configurados. Después, en el script, obtienes el servicio Players y recorres la lista comparando la magnitud entre posiciones para quedarte con el jugador más próximo. Si esa distancia es menor que tu rango de detección, por ejemplo 50 studs, se activa la persecución. Para mapas con paredes conviene usar PathfindingService:CreatePath junto con ComputeAsync, y luego recorrer los waypoints resultantes llamando a MoveTo en cada uno. Si tu escenario es abierto y sin obstáculos, un MoveTo directo dentro de un bucle con task.wait resulta más sencillo y consume menos recursos. Recuerda comprobar siempre que el personaje exista y que su Humanoid siga vivo, y añade una condición de parada cuando el jugador se aleje demasiado.

Componente Función
Humanoid Permite mover al NPC con MoveTo
PathfindingService Calcula rutas esquivando obstáculos
Bucle de detección Localiza al jugador más cercano
Rango de detección Define desde qué distancia reacciona

¿Cómo hacer que el NPC enemigo ataque al jugador cuando esté cerca?

Para que el NPC ataque, debes comprobar dentro del mismo bucle si la distancia hasta el jugador es menor que tu umbral de ataque, por ejemplo 5 studs, y entonces ejecutar la función de daño. Lo habitual es detener el movimiento en ese momento, reproducir la animación de golpe y aplicar el daño con Humanoid:TakeDamage sobre el personaje del jugador. Este método es preferible a restar la propiedad Health directamente, porque respeta el ForceField que protege a quien acaba de reaparecer. Es imprescindible añadir un tiempo de enfriamiento mediante una variable booleana o una marca de tiempo, ya que de lo contrario el NPC atacaría en cada vuelta del bucle y mataría al jugador al instante. Todo el cálculo del daño debe ocurrir en el servidor para evitar manipulaciones, aunque puedes usar un RemoteEvent si quieres disparar efectos visuales en el cliente. Y antes de cada golpe, verifica que el Humanoid del objetivo exista y conserve vida.

Acción Implementación
Detectar cercanía Distancia menor a 5 studs
Aplicar daño Humanoid:TakeDamage en el servidor
Evitar golpes seguidos Variable de enfriamiento con task.wait
Validar el objetivo Comprobar que sigue vivo antes de golpear

¿Cómo evitar que el NPC enemigo se quede atascado o atraviese paredes al perseguir?

Para evitar atascos, utiliza PathfindingService en lugar de un MoveTo directo, ya que genera rutas que respetan la geometría del mapa incluyendo paredes, rampas y huecos. Llama a ComputeAsync pasando la posición del NPC y la del objetivo, comprueba que el estado devuelto sea correcto y recorre después los puntos obtenidos con GetWaypoints. Un detalle que mucha gente pasa por alto es configurar los parámetros del agente al crear la ruta: indicando el radio y la altura del NPC, el servicio evitará mandarlo por huecos por los que físicamente no cabe. Si el cálculo falla, lo sensato es esperar un momento y volver a intentarlo en lugar de forzar un movimiento directo. También conviene detectar los atascos comparando la posición del NPC cada pocos segundos: si apenas se ha movido pese a tener un destino, recalcula la ruta. Y muy importante, nunca desplaces al NPC modificando su CFrame a mano, porque eso sí lo hará atravesar paredes.

Problema Solución
El NPC se atasca Recalcular la ruta con PathfindingService
Atraviesa paredes Usar waypoints y nunca mover el CFrame
Ruta imposible Comprobar el estado antes de moverse
Pasa por huecos estrechos Definir el radio y la altura del agente

¿Cómo añadir animaciones y efectos al ataque del NPC enemigo?

Para añadir animaciones al ataque, carga la pista en el Animator del Humanoid con LoadAnimation y reprodúcela con Play justo antes de aplicar el daño. Lo primero es comprobar que el NPC tenga un Animator dentro de su Humanoid, algo que los modelos de personaje ya incluyen por defecto. Después crea un objeto Animation con el ID de tu animación y cárgalo una sola vez al inicio del script, guardando la pista resultante en una variable: cargarla en cada golpe desperdicia recursos innecesariamente. Cuando el jugador entre en rango, llama a Play y espera un instante que coincida con el momento del impacto visual, normalmente medio segundo, antes de aplicar el daño real. Para los efectos, inserta un objeto Sound dentro del NPC y reprodúcelo en ese mismo instante, y añade si quieres un ParticleEmitter que emita una ráfaga breve con el método Emit. Todo esto debe ejecutarse desde el servidor para que lo vean todos los jugadores de la partida.

Elemento Cómo aplicarlo
Animación de ataque Cargar con LoadAnimation y lanzar con Play
Sonido del golpe Objeto Sound dentro del NPC
Partículas de impacto ParticleEmitter con el método Emit
Sincronización Aplicar el daño al llegar el impacto visual

Si quieres conocer otros artículos parecidos a Cómo hacer un NPC enemigo que persiga y ataque en Roblox Studio puedes visitar la categoría Roblox Studio.

SoyKarly

Apasionado de Roblox y la creación de mundos virtuales. Siempre en busca de los mejores mapas, los desafíos más épicos y las últimas tendencias de la plataforma. Para mí, Roblox no es solo un juego, es un universo de infinitas posibilidades donde la imaginación no tiene límites.

Contenido que te podría interesar

Deja una respuesta

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

Subir