Determina lo que el usuario necesita y guíalo a través de la configuración de navegación. Consulta navigation-system.md para obtener detalles ampliados de componentes, notas de API, recetas de código y solución de problemas.
Pasando C# a eval
eval compila un bloque de instrucciones, no un archivo. Dos consecuencias, ambas causan un error de compilación en lugar de una advertencia:
- No hay directivas
using. El compilador leeusing UnityEngine;como una declaración de eliminación de recursos y la rechaza (CS0210). - Los tipos deben estar completamente calificados. Un
AssetDatabaseoVolumesimple no se resuelve (CS0246/CS0103), y unObjectsimple es ambiguo conobject(CS0104).
Cuando un fragmento de código a continuación está escrito como un archivo (con usings, para legibilidad o porque está destinado a guardarse en el proyecto), califica los tipos antes de pasarlo a eval.
Lógica de Enrutamiento
| El Usuario Dice | Interpretación |
|---|---|
| "agregar navegación" / "configurar nav" | Configuración completa: NavMeshSurface + horneado + NavMeshAgent |
| "haz que este personaje navegue" | Agregar NavMeshAgent, asegurar que NavMesh exista |
| "agregar búsqueda de caminos" | NavMeshAgent + script de movimiento |
| "el agente no se mueve" / "ruta no encontrada" | Solucionar problemas — ver Árbol de Decisión de Solución de Problemas en la referencia |
| "evitar obstáculos" | NavMeshObstacle con tallado o evitación |
| "conectar dos áreas" / "saltar de un lado a otro" | NavMeshLink entre áreas |
| "patrullar entre puntos" | NavMeshAgent + script de patrulla |
| "clic para mover" | NavMeshAgent + script de clic para mover con raycast |
| "animar al personaje mientras navega" | Acoplar Animator con NavMeshAgent |
| "diferentes tamaños de agente" | Configurar tipos de agente en la ventana de Navegación |
| "áreas y costos" / "restringir áreas" | Tipos de área NavMesh, modificadores y máscaras de área de agente |
Flujo de Trabajo
0. Verificación de Instalación del Paquete
Antes de hacer cualquier otra cosa, verifica que com.unity.ai.navigation esté instalado. Si falta, agrégalo a Packages/manifest.json bajo dependencies — Unity lo resuelve cuando el Editor recupera el foco, y esto no necesita conexión con el Editor:
"com.unity.ai.navigation": "<versión actual 2.x>"
No inventes la cadena de versión. Lee la actual del registro de Unity — https://packages.unity.com/com.unity.ai.navigation lista cada versión publicada — o copia la versión que un paquete Unity adyacente en este manifiesto ya esté usando. Una versión que no existe hace que Unity falle la resolución en silencio, por lo que una suposición incorrecta parece que no ha pasado nada.
Procede solo una vez que se haya confirmado la instalación. Si tienes un Editor en vivo para ejecutar C#, consulta navigation-system.md para el equivalente de Client.Add.
1. Vuelo Previo: Evaluar la Configuración Actual de Navegación
Antes de hacer cambios, inspecciona lo que ya existe:
- Encuentra los componentes de navegación existentes. Con un Editor conectado, consulta la escena en vivo en busca de
NavMeshSurface,NavMeshAgent,NavMeshObstacle,NavMeshLinkyNavMeshModifier— consulta la habilidadunity-clipara manejar un Editor en ejecución. Sin uno, busca en los archivos de escena y prefabs esos nombres de componentes. - Verifica los tipos de agente configurados a través de Window > AI > Navigation > pestaña Agents.
- Resume TODOS los componentes de navegación detectados antes de proponer cambios.
2. Recopilar Información Faltante
Antes de crear componentes, asegúrate de que el usuario haya especificado: superficies transitables, tipo/tamaño de agente, comportamiento del agente, obstáculos, enlaces y requisitos de área/costo. Pregunta si algo no está claro. Consulta la Lista de Verificación de Recopilación de Información en la referencia para obtener detalles completos.
3. Planificación y Ejecución
Sigue este orden general. Consulta la Guía de Configuración de Componentes en la referencia para obtener instrucciones detalladas paso a paso por componente:
- NavMesh Surface — crea la malla transitable (hornea)
- NavMesh Agent — agrega personajes de búsqueda de caminos
- NavMesh Obstacle — agrega obstáculos dinámicos
- NavMesh Link — conecta áreas NavMesh desconectadas
- NavMesh Modifier / Modifier Volume — ajusta los tipos de área
- Scripts — movimiento, patrulla, clic para mover, acople de animación (ver Recetas Comunes en la referencia)
4. Validación
Después de la configuración, confirma:
- NavMesh está horneado y visible (superposición azul)
- El tipo de agente de NavMeshSurface coincide con el tipo de agente de NavMeshAgent
- Los agentes tienen una ruta válida hacia su destino
- Los obstáculos tallan u obstruyen correctamente
- Los enlaces tienen ambos extremos conectados y Activado está habilitado
- Las máscaras de área permiten el movimiento previsto
- No hay componentes conflictivos (ver Guía de Mezcla de Componentes en la referencia)
- Si se usa Rigidbody con NavMeshAgent, Is Kinematic está habilitado
5. Confirmación Final
Resume lo que se creó o cambió:
- Superficies NavMesh: qué GameObject, tipo de agente, modo de geometría, estado de horneado
- Agente(s) NavMesh: qué GameObject, velocidad, distancia de parada, máscara de área
- Obstáculo(s) NavMesh: qué GameObject, forma, tallado activado/desactivado
- Enlace(s) NavMesh: inicio/fin, bidireccional, tipo de área
- Scripts: qué scripts adjuntos a qué GameObjects
- Cualquier paso manual requerido (ajustar waypoints, volver a hornear después de cambios en la escena, etc.)