En esta conferencia, te presentaré un concepto poderoso usando A. YO. navegación llamada
mallas de navegación o NavMeshes. NavMeshes es una característica incorporada de Unity y se usa para dividir un entorno en áreas navegables
en las que el algoritmo A * se puede usar para encontrar rutas. El método (originalmente llamado metamapa) se
desarrolló para aplicaciones robóticas a mediados
de la década de 1980. Se hizo más popular en la década de 2000 para su uso en juegos.
Un navmesh divide un modelo en una serie de polígonos y asigna un costo a cada uno.
Este costo se considera en el algoritmo de búsqueda de ruta para determinar la mejor ruta para una A. YO. tomar.
Llamamos a la A. YO. usando un navmesh y un 'Agente'.
Este es un término genérico originario del A. tradicional. YO. donde palabras como NPC, Agent y Bot
significan lo mismo.
Hay cuatro pestañas en el sistema de navegación de Unity para configurar una malla de navegación: Agentes, Áreas, Hornear y Objeto.
El primero define un agente.
Un agente tiene 4 propiedades principales que puede establecer para definir el tamaño del personaje y las habilidades de movimiento.
Estos son utilizados por un navegador para determinar a dónde puede ir un personaje en el entorno.
NOTA: No se basan en las propiedades que puede establecer en el sistema de física, ni
se basan en el tamaño
del modelo que está utilizando, así que configúrelos con cuidado. El tamaño de un agente está definido por un cilindro dentro del cual cabría el personaje.
Tiene un radio para determinar qué tan ancho es tu personaje y una altura. En general, se supone que el personaje navegará a través de un
terreno plano, pero en el caso de pendientes y escalones, debe declarar el gradiente de pendientes accesible por el personaje, así como
la altura de las escaleras a las que puede acceder. La pestaña Agentes también le permitirá
definir agentes de diferentes tamaños agregando más de un tipo.
Esto le permite tener muchos tipos de agentes, todos con diferentes tamaños y capacidades de navegación.
La pestaña Áreas es donde puede definir diferentes costos para diferentes partes de la malla de navegación.
El algoritmo A * utiliza el costo para calcular la mejor ruta a través de la malla de una ubicación
a otra.
Hay 3 tipos incorporados que se utilizan para configurar diferentes partes de una malla para caminar, no caminar
y saltar. A
estos, puede agregar los suyos.
Cualquier tipo de área puede incluirse o excluirse en la búsqueda de búsqueda de ruta de un agente a través del terreno.
Esto hace posible que algunos personajes no puedan atravesar el agua o caminar por las puertas.
La pestaña Hornear convierte tus mallas en una malla de navegación.
Lo hace dividiendo la malla en numerosos polígonos y determina a dónde debe viajar
el agente usando el Tamaño del Agente Horneado.
Cuando crea una malla de navegación en la pestaña Hornear, utiliza este tamaño de agente y no los tamaños que
configuró en la pestaña Agentes.
De forma predeterminada, el tipo de agente 'Humanoid' es el único tipo de agente reconocido por el navegador y, aunque puede definir
varios tipos de agentes en la pestaña Agente, solo puede usar Humanoid en la configuración que se le proporciona
a través de Unity.
Una vez dicho esto, hay componentes beta disponibles que le permitirán configurar diferentes páginas de navegación para diferentes
tipos de agentes y lo veremos en talleres posteriores. Otras configuraciones de horneado incluyen la posibilidad
de generar 'Off Mesh Links'.
Estos definen qué tan lejos a través de un espacio en la malla puede caer o saltar un agente.
El detalle del navmesh se puede configurar mediante la configuración 'Tamaño manual de vóxel'. Los Voxels son una estructura de datos utilizada para
dividir el mundo, antes de que se construya el navmesh.
Cuanto mayor sea el tamaño del vóxel, menos precisa será la red de navegación ya que las divisiones mundiales
más grandes perderán algunos de los detalles en la malla. Este valor generalmente se establece en 3 por Radio del agente. Está buscando valores
alrededor de 2 y 4. El 'Área de región mínima' le permite mover secciones de la
malla que se calcularon como navegables pero que son demasiado pequeñas para ser de utilidad y realmente no desea que
se incluyan en la búsqueda de ruta. Al aumentar el área mínima de la región y volver
a hacer el cambio, puede eliminar estas áreas pequeñas. Cuando se genera una malla de malla para
un montón de mallas, promedia la altura y puede hacer cosas como convertir las escaleras en una pendiente.
Si este no es el efecto que busca, puede activar la casilla 'Malla de altura' antes de hornear.
Esto incluirá valores de altura en la malla.
También ocupará más memoria y tiempo de cocción, así que
no seas demasiado generoso con su uso.
La última pestaña (la pestaña Objeto) es donde puede alinear tipos de área específicos a diferentes partes de su malla.
Estas son las áreas definidas en la pestaña Áreas.
Esta pestaña también le permite especificar para qué partes de su escena desea crear una malla de navegación, así como generar enlaces fuera de la
malla que le permiten pasar de una malla de navegación a otra. Navmeshes es un poderoso sistema para hacer
que tus NPC se muevan con muy poco esfuerzo en tu nombre.
Con ellos, puede crear todo tipo de escenarios, desde patrullas y multitudes, hasta tráfico y bandadas. En esta sección examinaremos algunos de los elementos
fundamentales que hacen que las mallas de navegación funcionen y crearemos algunos ejemplos que
realmente demuestren su poder.