Continuaremos buscando agentes de navmesh en esta conferencia creando otro agente que solo pueda
ir en ciertas áreas.
Entonces, antes que nada, agarre su RedAgent y simplemente duplíquelo.
Si tienes un montón de otros Agentes Rojos porque estabas jugando con ellos desde antes, puedes
dejarlos allí o tal vez quieras deshacerte de ellos.
Ahora voy a presionar W aquí y separar estos agentes y usaré mi material azul, un color
que hice antes y crearé el agente azul.
Entonces llamemos a esto BlueAgent ... y este BlueAgent, porque era una copia del RedAgent, tiene el mismo
script AIControl y el Nav Mesh Agent adjunto.
Son importantes
Necesita tenerlos allí y en realidad no estamos cambiando el código en absoluto. Estamos cambiando
la especificación navmesh. Lo que quiero hacer es hacer que BlueAgent no pueda
atravesar este corredor y eso significa modificar las áreas dentro de la malla de navegación para que BlueAgent no pueda cruzar este
polígono que está aquí.
Así que voy a volver a Navegación y podemos ver que todo es azul y todo está listo para ser transitable
en este
caso, ese es el primer valor incorporado.
Vamos a agregar otro, llamémoslo Corredor. Ahora Corredor que
queremos asignar a esta área aquí.
Por lo tanto, debe hacer clic en el polígono (o la malla) que será el corredor, por lo que en cualquier otro lugar que desee establecer
en Corredor también
puede hacerlo en este momento, pero simplemente seleccionando todas las partes que desee. .
Así que hagamos esto.
Ahora que está seleccionado, vaya a la pestaña Objeto debajo de la pestaña Navegación. Verá que esta casilla estática de navegación está marcada porque eso
es lo que configuramos para que vuelva al
Inspector debajo de Estática aquí.
Ahora, si selecciona un polígono que no ha horneado antes, como este aquí, puede seleccionarlo como
estático aquí o en Navegación, en
realidad puede marcarlo y este también está marcado.
Marcar eso hace exactamente lo mismo que configurarlo Estático en
el Inspector.
Ahora que hemos creado ese corredor como un área para la malla de navegación, en esta sección Objeto podemos establecer superficies
individuales para que sean de ese tipo.
Entonces, en este caso, puedo soltar este cuadro y encontraré 'Corredor' porque escribí eso en
las áreas y para que polySurface4901 se convierta en el corredor.
Si volvemos a hornear y luego lo horneamos, verás que se vuelve rosa y solo veamos las áreas y puedes ver
que el color del corredor es rosa.
Ahora es posible que hayas notado aquí que tengo marcada esta malla de altura porque estaba
probando algo antes. Déjame hornear de nuevo sin él.
Correcto.
Así que ahora que lo hemos hecho, lo hemos asignado al corredor.
Lo siguiente que debemos hacer es decirle a BlueAgent que no puede bajar por los corredores.
Entonces volvemos y encontramos el BlueAgent que está aquí y en el Inspector en la parte inferior de su Nav Mesh Agent no
cambiamos el Tipo de Agente.
Todavía estamos trabajando con Humanoid, pero cambiamos la máscara de área que se encuentra en la parte inferior
y aquí muestra todas las diferentes partes de la malla de navegación que ese agente podrá navegar y, en este
caso, el corredor no lo es.
Así que solo lo seleccionamos y eso desactivará el corredor.
Ahora el Agente Azul no puede ir por el pasillo.
Así que vamos a probar esto.
No hemos cambiado ningún código, solo hemos cambiado la navmesh y hacia dónde puede ir el agente. Presiona Play y tenemos a nuestros 2
agentes aquí.
Podrán deambular, pero si selecciono
el área interior, el Agente Rojo podrá llegar allí, pero el Agente
Azul se detiene en la puerta porque no hay forma posible de cruzar este
corredor.
Puede Ctrl-D para crear algunos RedAgents y Ctrl-D para crear algunos BlueAgents y
verlos moverse y también pasar uno al otro para tratar de atravesar la puerta porque los chicos azules
van a meterse en el camino del rojo.
En este caso, los están bloqueando por completo.
Intenta moverlos un poco
y ahora un chico logró pasar. Por lo tanto, incluso podrían moverse un poco porque todavía se mueven alrededor del lugar
en el que se encuentran y algunos de ellos lo superarán.
Pero puedes ver en esto el comportamiento del rojo y el azul.
Ahora, si el azul necesitaba entrar, entonces necesitamos crear otro camino para ellos. Para crear un camino
para
BlueAgents, voy a poner una rampa por aquí.
Entonces, lo que hice fue quitar los barriles que estaban por aquí y también
me deshice de las barandas. Así que había un par de barandas aquí y también en
el otro
lado y lo estiré y lo giré para que sea solo un cubo estándar de Unity, lo hice un puente sobre esa área.
No es absolutamente perfecto y hay un pequeño paso allí, pero estamos permitiendo avanzar
en esta malla de navegación.
También he seleccionado muchas de estas otras áreas en el mapa para convertirlas también en navmesh, de modo que
cuando los agentes crucen el puente, puedan
encontrar su camino de regreso a esa otra área.
Ahora este cubo no está unido al resto de la malla.
Está solo y está bien.
No importa si es parte de una malla completa o un solo objeto, aún puede integrarse en la malla de navegación.
Ahora seleccionamos ese cubo en particular en este caso y pasamos a nuestra ventana de Navegación y bajamos
a Objeto.
Lo convertimos en una estática de navegación, marcando allí.
También podemos marcarlo en el Inspector y luego configurarlo en 'Walkable', que es lo que queremos que sea.
Volvemos a Bake y luego hacemos clic en [Bake] y verás que obtienes un buen camino por allí.
Así que regresemos y ejecutemos esto. Cuando haga clic aquí, los chicos rojos irán
por el pasillo porque pueden hacerlo.
Los chicos azules ni siquiera intentan ir por el corredor, por lo que ni siquiera entra en
sus cálculos cuando se dirigen por la parte de atrás y luego entran y
atraviesan este otro corredor que está aquí y abajo en este área donde están los rojos.
Ahora los chicos rojos van a tomar el camino más corto (o el menor costo) para llegar a esa área.
Veamos si primero movemos los rojos por aquí, si podemos hacer que crucen el puente.
Solo estoy realineando eso y voy a configurar mi cámara ... Alinear con Ver, para que podamos ver más de la estación
y luego presionamos Reproducir y haga clic aquí y todos irán allí porque ese es el camino más corto para
llegar allí.
Luego, si hago clic allí, todos cruzarán el puente y luego, una vez que estén aquí, debería ser más
corto para ellos entrar de esta manera.
Sí.
Entonces entrarán por allí. Entonces, en este caso, los hicimos ir hacia allí y luego fue una
distancia más corta para que vinieran por aquí que para cruzar y cruzar ese corredor.
Pero si están parados aquí, en el Inicio, entonces el corredor es la forma más rápida para que entren.
¿Cómo podríamos hacer que el corredor sea más costoso para ellos? Digamos que el corredor está en llamas
y sería una mejor idea para ellos andar por allí, que pasar
por aquí.
Lo que haces es aumentar el costo de esta parte del camino
y podemos hacerlo en la ventana de navegación. Si entramos en Áreas, 'Corredor' está configurado actualmente en un costo
de 1, pero si hicimos un costo de 10 para recorrer ese corredor, el cálculo será un
poco diferente para ellos.
Una vez que haya cambiado el costo, deberá volver a revisarlo y volverlo a generar,
para que esos valores se guarden en la malla de navegación.
Okay.
Entonces presionemos Play y veamos qué obtenemos ahora. Así que intentemos que vayan aquí.
Ahora, en este caso, eso debe estar muy cerca del costo de 10 para que bajen porque
puedes ver que 2 de ellos que están lo suficientemente cerca en la vecindad cruzan por aquí, llegaron primero, mientras
que los que fueron empujados por el azul Los chicos más alejados del corredor decidieron que era más fácil dar la vuelta de
esa manera.
Entonces, en esta conferencia, vimos cómo crear diferentes áreas y asignar diferentes áreas
a diferentes objetos que están en nuestro navegador y luego asignar las diferentes áreas al propio sistema de búsqueda de ruta del agente, que
está en el agente de navegación al activarlas o desactivarlas .