En esta sección, comenzaremos a ver la simulación de un grupo de agentes en los que
son tratados 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 la emoción, la colisión, la dirección y la velocidad) se propagan de
una persona a otra dando al grupo entero su propia identidad. Simular a cada individuo en ese grupo y luego generar
una multitud requeriría mucho trabajo y,
de hecho, muchas de las cosas que podría considerar importantes tomadores de decisiones para
el movimiento individual en una multitud pueden reducirse a simples matemáticas vectoriales.
Existen numerosos métodos que los investigadores han investigado para simular multitudes, incluso hacer que las personas
se muevan como partículas en un fluido para usar datos del mundo real.
Una multitud no se mueve como un conjunto caótico de individuos sino más bien de una manera casi organizada.
Se dice que es un sistema autoorganizado donde las líneas de flujo aparecen en la dirección del movimiento.
Sin embargo, se ha encontrado que si una multitud se vuelve más densa que seis personas por metro cuadrado, entonces
se producirán focos de turbulencia.
Una de las formas más populares y simples de simular una multitud es con el algoritmo de congregación de Reynolds
que se ha utilizado en imágenes en movimiento para simular rebaños de animales y ejércitos.
Se basa en 3 reglas simples. Gire hacia el rumbo promedio del grupo, gire hacia
el centro promedio del grupo y evite a los que le rodean.
Utilizaremos estas reglas en combinación con navmeshes y recasting para crear multitudes y bandadas
en esta sección.
Si desea explorar algunas dinámicas de multitudes simples, puede hacerlo utilizando una malla de navegación.
Abre Unity y crea un plano de tierra.
También crea 2 paredes.
Así que acabo de hacer el plano de tierra de un plano 3D normal y he creado dos paredes con algunos cubos y las paredes
están posicionadas de tal manera que hay un corredor en el medio.
La cápsula azul que he agregado aquí tendrá que caminar hasta aquí, bajar por el pasillo y llegar
a este cubo.
Esta cápsula aquí tendrá que caminar hacia arriba y hacia allá. Así que crea 2 cápsulas para que
estén en la Jerarquía. 'Objeto 3D> Cápsula' y los he
coloreado de manera diferente y luego he nombrado un Agente Rojo y un Agente Azul.
También he agregado algunos objetivos. Agregué un cubo llamado BlueGoal y ese cubo está en el extremo
opuesto del camino que vamos a crear para BlueAgent ... y RedGoal está en el extremo opuesto
de RedAgent.
Ahora RedAgent necesita que se le agregue una malla de navegación.
Estas son solo todas las configuraciones predeterminadas.
BlueAgent también tiene una navmesh agregada y
luego en ambos, tengo un script llamado 'AIController' y en ese script
encontrarás esto.
En primer lugar, tengo una variable expuesta (variable pública) llamada 'objetivo' y eso es lo que
les daremos a los agentes, los 2 cubos de objetivos, para que sepan hacia dónde se dirigen.
Después de eso estamos agarrando el NavMeshAgent que está adjunto a nuestro personaje.
No olvide incluir 'usar UnityEngine. AI;' Biblioteca en la parte superior. En el Inicio, luego tomamos el
agente unido a la cápsula y también podríamos en este punto, establecer el objetivo de
destino que será 'objetivo. transformar. posición 'y eso es todo lo que necesitamos hacer.
Incluso podemos deshacernos de la actualización porque no la necesitaremos. Guarde eso y adjunte ese código
a RedAgent y BlueAgent.
Luego, desea seleccionar el plano y los dos cubos que son las paredes y asegurarse de que estén configurados como
Navegación estática y puede hacerlo en la pestaña Navegación> Objeto seleccionando
esta casilla de verificación aquí o también puede configurarlos en el Inspector como Tenemos antes.
Una vez que todo esté configurado, desea ir a Hornear y luego hacer clic en el botón [Hornear] y eso le dará
un área azul
como la que está viendo aquí.
Entonces, las únicas partes que no son transitables son donde están las paredes.
Esto obligará a los agentes a tener que ir de un extremo al otro.
Ahora, para asegurarse de que eso suceda, seleccione BlueAgent y luego, en el Inspector, en el código para el AIController,
desea usar el cubo que está aquí.
Lo sentimos, junto a RedAgent como objetivo de BlueAgent.
Así que agarra ese cubo (que he llamado BlueGoal) y luego lo arrastraría y soltaría en la ranura de
gol para la cápsula azul. Para la cápsula roja, es
al revés.
El objetivo será el cubo en el otro extremo.
Ahora, cuando juegas esto, los agentes caminarán por el camino y se intercambiarán entre sí.
Ahora, eso fue acelerado por la magia de
la edición de video, pero si quieres que tus agentes se muevan más rápido, no olvides que puedes seleccionarlos
en la Jerarquía, ve al Inspector y cambia su valor de Velocidad.
Los míos están configurados actualmente en 10, que es bastante rápido por sí solo.
Cuando comencemos a agregar más agentes, es posible que desee que se ejecute un poco más lento.
Entonces, antes que nada, echemos un vistazo a ese fenómeno de 'autoorganización por flujo', que es donde 2 grupos que
se unen, se mueven en direcciones opuestas, formarán líneas de flujo a través de la multitud.
Todo lo que tenemos que hacer es seleccionar a nuestros dos agentes y luego Ctrl-D y crear un montón completo de copias.
Vamos a crear 20 copias. Ahora con esos en su lugar, presionemos Play y podemos verlos.
Todos están en el mismo lugar, por lo que van a explotar desde la misma posición en la que están. Ahora, a medida que se unen,
formarán líneas de
flujo y eso es solo
un pequeño grupo, por lo que obtienes 2 líneas claras de flujo donde se superponen.
Desde aquí, puede seleccionar todos esos duplicados y duplicarlos dos veces nuevamente para obtener más y
luego presionar Reproducir. Nuevamente, explotan desde
un solo lugar y ahora se van a aglomerar en esta área aquí y
descubriremos que formarán líneas de flujo.
Como viste allí, obtienes un poco de turbulencia, donde se volvió bastante denso y algunos tipos
aquí también se quedaron atrapados en esa multitud.
Puede modificar la simulación tanto como desee, agregando más paredes y más agentes.
Aquí puede ver que tengo 4 agentes de diferentes colores e incluso cuando se apiñan, puede ver claramente cómo
se forman las líneas de flujo.
En un. YO. , cuando este tipo de comportamiento ocurre en un sistema
que no está específicamente programado para hacer esto, se llama comportamiento emergente y son estos resultados inteligentes y
realistas los que estamos tratando de obtener en nuestros NPC con el mínimo esfuerzo de programación posible. En la próxima conferencia trabajaremos en
una simulación de multitudes con personajes humanos animados.