En esta sección, empezaremos a estudiar la simulación de un grupo de agentes en el que se
les trata menos como individuos y más en masa.
El comportamiento de la multitud difiere del comportamiento individual en que las propiedades dentro
de la multitud, como el movimiento, la colisión, la dirección y la velocidad se propagan de una persona a otra, por lo que dar
a todo el grupo su propia identidad para simular cada individuo de dicho grupo y luego producir una multitud sería un trabajo intensivo.
Y, de hecho, muchas de las cosas que se consideran importantes para el movimiento individual
en una multitud pueden reducirse a simples matemáticas vectoriales.
Hay numerosos métodos que los investigadores han estudiado para simular multitudes, desde hacer que las personas
se muevan como partículas en un fluido hasta utilizar datos del mundo real.
Una multitud no se mueve como un conjunto caótico de individuos, sino de forma casi organizada.
Se dice que es un sistema autoorganizado en el que aparecen líneas de flujo en la dirección del movimiento.
Sin embargo, se ha comprobado que si la densidad de una multitud es superior a seis personas por metro cuadrado, se producen
focos de turbulencia.
Una de las formas más populares y sencillas de simular una multitud es con el algoritmo Reynolds flocking que se
ha utilizado en las películas para simular rebaños de animales y ejércitos.
Se basa en tres sencillas reglas: girar hacia la dirección media del grupo, girar hacia el centro
medio del grupo y evitar a los que te rodean.
En esta sección utilizaremos estas reglas en combinación con las medidas NAV y el reparto de tarifas para crear
multitudes y bandos.
Así que para comenzar nuestra exploración de las multitudes, vamos a crear una multitud muy simple aquí en una malla
naval para que podamos investigar los principios de flujo y cómo hay auto-organización dentro de eso.
Lo que me gustaría que hicieras es crear un nuevo proyecto unity.
Y dentro de él, vamos a añadir un simple plano como este.
Ahora, acabo de poner una textura para que se pueda ver mejor.
He creado dos objetos de pared y estos eran solo cubos que he estirado, así que básicamente
los he seleccionado y estirado de diferentes maneras para que tengas estas dos paredes así.
Ahora también necesitamos una ubicación de la meta para nuestros dos agentes.
Tenemos una cápsula azul y otra roja.
Estos van a ser nuestros agentes de malla naval.
Necesito que se añada un cubo aquí, que se llamará gol rojo, como puedes ver en la jerarquía
y este otro aquí, que será el gol azul.
Lo que vamos a hacer es que nuestros agentes recorran este curso para llegar a su objetivo particular.
A continuación, puede crear el agente.
Así que los agentes son sólo cápsulas.
Y a esas cápsulas les he añadido un material azul y otro rojo.
Ahora hay algunos otros archivos en mis activos.
No te preocupes por eso.
Llegaremos a ellos en la próxima conferencia.
Sólo por ahora.
No los necesitamos.
Bien, una vez que tengas esa configuración particular funcionando, vamos a hacer una malla.
Así que tenemos que seleccionar el plano, que es el suelo y las paredes.
Y a partir de eso, vamos a ir al inspector y usted quiere asegurarse de que usted establece
a la navegación estática, estática, para que podamos poner la malla de navegación en allí y hornear en.
Para ello, basta con hacer clic en el botón de cocción de la pestaña de navegación.
La otra cosa que quieres hacer con esos dos objetivos, si los seleccionamos en el inspector, es desactivar
su casilla.
Collider Sólo los queremos como ubicación de destino, nada con lo que colisionar y nada en la malla de navegación.
Bien, ahora estamos listos con eso.
Vamos a crear un script de controlador aéreo.
Así que crea tú mismo un nuevo script en C-sharp llamado I Control.
Y vamos a abrir eso y poner algo de código para estos agentes.
De acuerdo.
Así que en este código, queremos que la IA del motor de la unidad en nuestras bibliotecas aquí arriba.
Va a seguir siendo un comportamiento mono.
Estos van a ir en las cápsulas, todos los agentes.
Así que, cuando los tengamos, tenemos que establecer un lugar de destino al que llegar.
Así que vamos a ir un objetivo público de objetos de juego y luego necesitamos nuestro agente NAV para obtener el agente que está en esos objetos.
Cuando los añadimos, entonces dentro del inicio irá agente es igual a este punto obtener componente nav malla agente.
Y luego con ese agente iremos a establecer el destino del agente a la posición del punto de transformación de la meta.
Así que eso es todo lo que necesitamos aquí por ahora.
Así que guarda que ahora vamos a volver a entrar.
La unidad.
Y lo que haremos con esos guiones es ponerlos en un agente azul.
Así que vamos a arrastrar y soltar eso en nuestro agente azul.
Y también queremos dejarlo caer sobre el agente rojo.
Bien, ahora vamos a volver al inspector ahora para el agente azul y el agente rojo, que sólo
puedo seleccionar y añadir esto a ambos es un componente de agente de malla nav.
Permítanme desplazar esto hacia arriba para que puedan ver lo que está pasando aquí abajo.
De acuerdo.
Así que los ajustes básicos para nuestro agente de malla de navegación que hemos estado utilizando antes, la velocidad, es posible que
desee acelerar un poco más rápido para ver la simulación.
Así que voy a poner su velocidad a diez.
De acuerdo.
Ahora seleccionando el agente azul, pondré el objetivo aquí en el objetivo azul y luego el agente
rojo se pondrá en el objetivo rojo así.
Muy bien.
Así que ahora vamos a pulsar el play y a ver qué pasa cuando se les pide que vayan a un nuevo destino.
De acuerdo.
Así que van a subir.
Atraviesan el pasillo y se dirigen a sus objetivos.
En ese momento dejarán de hacerlo.
Muy bien.
Así que mientras estamos aquí, vamos a establecer que la cámara principal para el objeto de juego, alinear con la vista para que podamos
ver que cuando se pulsa el juego y tienen que cambiar de nuevo a la escena.
Lo que vamos a hacer con nuestros agentes, también es nuestro agente azul.
Y nuestro agente rojo es solo shift, seleccionarlos y pulsar control D para hacer unos cuantos duplicados de ellos
así.
Ahora estarán todos en el mismo espacio, pero una vez que empiecen a moverse, se separarán
debido a sus colisionadores.
Vamos a pulsar el play y a ver si conseguimos que empiecen esas líneas de flujo y esa autoorganización.
Bien, aquí vienen y van por aquí.
Y puedes ver que lo hicieron.
Bien, entonces han permanecido juntos.
Ahora, ni siquiera les hemos dicho que permanezcan juntos.
Es sólo la forma en que está funcionando esta línea de flujo.
Es como cuando la gente está en una multitud y se mueve, tiende a ir por el camino que menos se resiste, aunque
en realidad no le hayas dicho que lo haga.
Es casi como el agua que se autoorganiza cuando fluye en diferentes direcciones.
Así que vamos a añadir algunos agentes más.
Vamos a cambiar, seleccionar los y luego ir control D, control D y pulse el botón de reproducción y vamos a echar un vistazo
a lo que hace.
De acuerdo.
Así que están entrando en razón y hay un poco de turbulencia.
Así que esa es la turbulencia que entra porque ahora tenemos básicamente más de seis personajes y van a cada
extremo.
Así que esto es realmente una simulación divertida para jugar un poco y experimentar con el tipo de funciones
que ocurren dentro del flujo de una multitud.
Así que siéntete libre de añadir más cápsulas de diferentes colores con diferentes ubicaciones de meta
si quieres jugar un poco con ello.
Puedes modificar esta simulación tanto como quieras añadiendo más paredes y más agentes.
Aquí puedes ver que tengo cuatro agentes de diferentes colores e incluso cuando se amontonan puedes
ver claramente las líneas de flujo que se forman en IE.
Cuando este tipo de comportamiento se produce en un sistema que no está programado específicamente para ello,
se denomina comportamiento emergente y son estos resultados inteligentes y realistas los que intentamos obtener en nuestros NPC
con el menor esfuerzo de programación posible.
En la próxima conferencia trabajaremos en una simulación de multitudes con personajes humanos animados.