← Volver al blog

Crea un RPG 3D con Unity MCP: Control en Tercera Persona, Combate y Misiones

Guía práctica de Unity MCP para un prototipo RPG 3D jugable: movimiento en tercera persona, combate cuerpo a cuerpo, máquinas de estado de enemigos y misiones en Cursor u otros IDEs con MCP.

Publicado
  • Unity MCP
  • 3D RPG
  • Unity
  • combat
  • AI game development

Un prototipo RPG 3D listo para demo generalmente necesita estas piezas primero: movimiento y cámara en tercera persona ajustables, un bucle de combate cuerpo a cuerpo en tiempo real, un enemigo con una pequeña máquina de estados, una misión o diálogo activable, y un HUD que muestre salud o progreso de la misión. Esta guía sigue ese orden de construcción. Asume que diriges un proyecto de Unity abierto desde Cursor, Claude Code, Codex u otro IDE con capacidad MCP a través de Unity MCP—leyendo y escribiendo escenas, GameObjects y C#, no solo pegando archivos en el disco.

Instala y conecta: Guía de instalación de Unity MCP. Las versiones de editor compatibles siguen la página del producto (comúnmente Unity 2022.3+ / Unity 6).

Define un segmento jugable mínimo

Envía la v1 solo si puedes aceptar:

  1. Movimiento WASD, mirar con el ratón, saltar; el suelo y pendientes suaves se sienten estables
  2. Un ataque cuerpo a cuerpo (animación placeholder OK) que golpee un collider y cause daño
  3. Un enemigo: patrulla → detecta al jugador → persigue / ataca; deshabilita o destruye al morir
  4. Un NPC: acércate para hablar o aceptar una misión; objetivo “derrota a ese enemigo”, luego actualiza el registro
  5. HUD simple: barra de salud + una línea de misión

Bloquea el arte con primitivas si es necesario. Trata menú principal, cuadrículas de inventario, HUD pulido como una pasada de UI posterior (ver más abajo).

Preparación del proyecto y MCP

Antes de los prompts de gameplay:

  • Proyecto de Unity abierto; la escena objetivo puede entrar en Play
  • Servidor Unity MCP en ejecución; el IDE de IA puede listar raíces de la jerarquía (prueba de humo de solo lectura)
  • Commit de referencia hecho; haz commit de nuevo antes de ediciones grandes

Verificación de solo lectura:

Lista los GameObjects raíz en la escena activa. No cambies nada.

Solo entonces escribe. Mantén el puente en localhost—no expongas el puerto públicamente. Consejos de prompt: Unity MCP con Claude Code y Cursor.

Jugador: control en tercera persona primero

Esqueleto mínimo (renombra para que coincida con tu proyecto):

Player
├── CharacterController o Rigidbody + CapsuleCollider
├── CameraPivot (yaw)
│   └── CameraArm (pitch) → Main Camera
└── AttackHitbox (trigger, desactivado por defecto)

Sé explícito sobre entrada, cámara y rutas:

Crea Assets/Scripts/Player/PlayerController.cs: tercera persona; WASD relativo a la cámara hacia adelante; yaw/pitch del ratón (clamp de pitch −30°–60°); Espacio para saltar; adjuntar a Player. Suelo mediante CharacterController.isGrounded o equivalente.

Luego ajusta la sensación:

Velocidad de movimiento ~5 con suavizado ligero de aceleración; salto ~1.2 m; ligero damping de seguimiento de cámara—sin giros bruscos.

Revisa pendientes, control en el aire y clipping de cámara antes de celebrar “script generado”.

Combate: un bucle cuerpo a cuerpo aceptable

Omite árboles de habilidades en v1. Objetivo: presiona atacar → activa hitbox por N frames → daño → actualiza HUD.

Añade PlayerCombat.cs: ataque con botón izquierdo, enfriamiento de 0.6 s; activa AttackHitbox durante la ventana; inflige 15 de daño a IDamageable. Los enemigos implementan IDamageable y HP actual.

Mejoras opcionales aún simples:

Bloquea el movimiento brevemente al atacar; breve hitstun en enemigos; 0.4 s de i-frames con parpadeo después del daño al jugador.

Eleva los cambios de salud como eventos/callbacks para que el enlace del HUD se mantenga limpio—evita que los scripts de UI hagan Find del mundo.

Enemigos: Idle / Patrol / Chase / Attack

No se requiere árbol de comportamiento. Cuatro estados cubren un mob de campo:

Idle → Patrol → Chase → Attack
         ↑________________↓ (perdió al jugador)

Crea Assets/Scripts/Enemy/EnemyAI.cs: patrulla de dos puntos; entra en Chase dentro de 12 m; Attack dentro de 2 m (enfriamiento de 1.2 s, 8 de daño); regresa a Patrol 3 s después de perder al jugador; en 0 HP reproduce muerte o SetActive(false).

Prefiere NavMeshAgent si ya horneas; de lo contrario, movimiento simple de búsqueda/giro para que la primera semana no se bloquee en navegación. Animator opcional—la orientación y la retroalimentación de color son suficientes al principio.

Misiones y NPCs: un hilo principal

La “sensación de misión” es disparador → seguimiento → completar, no un editor de misiones completo.

Mantén los datos simples:

  • QuestId, título, descripción, contador de progreso, bandera de completado
  • NPC Interact (E o trigger) abre diálogo y StartQuest
  • Muerte de enemigo llama QuestManager.NotifyKill(enemyId)

Crea un singleton QuestManager: acepta slay_wolf_01 (derrota 1 Lobo); avanza en la muerte del Lobo; actualiza el registro de misiones cuando se complete. NPC Mago: el jugador entra en el trigger, presiona E para comenzar esa misión.

TMP/Text es suficiente para el diálogo v1; ramas después.

HUD: placeholders primero, UI pulida después

Mientras el gameplay esté inacabado, conecta Slider / TMP_Text del motor:

Vincula OnHealthChanged del jugador a la barra del HUD; vincula el título actual de QuestManager a una línea TMP en la parte superior de la pantalla.

Cuando los menús, inventario o barras de habilidades necesiten UI de nivel de diseño (PSD/Figma en capas, paneles generados por NL, divididos y exportados como prefabs de Unity), usa un flujo de trabajo de canvas como AI Studio:

  1. Genera o importa HUD / menú RPG
  2. Componentiza y exporta a, por ejemplo, Assets/UI/
  3. Regresa al IDE de IA + Unity MCP para vincular botones, barras y texto de misión a eventos de gameplay existentes

Maneja recortes duros para alpha primero si es necesario. La estructura puede venir del canvas; los enlaces y la lógica de combate permanecen en Unity vía MCP—no esperes que la herramienta de canvas cree un FSM de combate completo.

Detalle de importación: Figma a UI de Unity.

Orden de construcción sugerido

MCP: control del jugador → un bucle cuerpo a cuerpo → un FSM de enemigo → una misión + NPC
        ↓
MCP: cableado de HUD placeholder (HP / línea de misión)
        ↓ (opcional)
Herramienta de canvas: menú / HUD pulido → exportar a Unity
        ↓
MCP: vincular UI pulida a eventos existentes

Sensación, números, IA, navegación → sigue usando Unity MCP.
Jerarquía visual de pantalla completa, reskins, prefabs reexportados → regresa a la herramienta de canvas.

Límites de prompt que realmente ayudan

Los prompts vagos desperdician ciclos. Fija:

  • Rutas y puntos de adjunto — qué carpeta, qué objeto
  • Aceptación — por ejemplo, “dentro de 10 s de Play, mata un lobo y ve la misión completada”
  • Fuera de alcance — por ejemplo, “no reconstruyas toda la pila de entrada; no borres la cámara”
  • Una preocupación por prompt — control, luego combate, luego enemigo

Siempre prueba el juego tú mismo. MCP elimina clics repetitivos; no reemplaza el juicio de diseño.

Lista de verificación de aceptación

  • El movimiento/cámara en tercera persona se mantiene controlable durante ~2 minutos sin clipping obvio o pérdida de control
  • El cuerpo a cuerpo golpea de manera confiable; el enfriamiento es notable
  • Patrulla vs persecución es legible; la muerte tiene retroalimentación clara
  • La misión se puede aceptar y completar; el texto del HUD se actualiza
  • Los cambios de salud llegan a la UI (placeholders OK)

Próximos pasos

  1. Completa la guía de instalación de Unity MCP y una prueba de humo de solo lectura
  2. Envía “movimiento + un enemigo + una misión” en ese orden
  3. Añade exportación de UI pulida solo cuando el HUD deba verse terminado

Más guías que te pueden interesar