Como mencioné en la conferencia anterior, desarrollar el ojo para una multitud de NPCs es mucho más simple de lo que la mayoría
de la gente piensa.
Esto se debe a que, a partir de reglas simples, se pueden desarrollar comportamientos complejos y, aunque no
estemos programando los llamados cerebros de los NPC, éstos parecen moverse con cierto nivel de inteligencia.
En esta conferencia, exploraremos más a fondo las multitudes con un grupo de personajes animados.
Bien, para empezar, tendrás que traer el archivo de inicio adjunto a esta conferencia.
Ahora, cuando lo lleves a unity, obtendrás una nueva escena llamada Crowd.
Haz doble clic en eso y abre tu escena, en cuyo caso verás estos personajes listos
para ti.
Ahora, he hecho mucho trabajo en cuanto a las animaciones con estos chicos.
Permítanme mostrarles lo que son.
Así que voy a entrar en el controlador para la multitud, y esto es lo que la animación se ve.
Es muy sencillo.
Tienes un ídolo, tienes que caminar y tienes que correr, y puedes hacer la transición entre esos diferentes
estados.
Aquí tenemos algunos parámetros para "está corriendo", "está caminando" y "está inactivo".
Así que estos son valores de activación que nos van a permitir la transición de un estado a otro.
Y vamos a utilizar estos valores aquí para desencadenar las animaciones.
Si no estás familiarizado con el sistema de animación, no te preocupes demasiado.
Esto va a hacer todo el trabajo por ti.
Simplemente no lo toques y cambia lo que está haciendo.
Así que simplemente escribiremos un código que activará y desactivará estas cosas para que nuestros personajes se muevan.
Así que volvamos a nuestra escena o seleccionemos a esta chica de nuevo.
Echa un vistazo al inspector.
Todos los personajes van a tener un agente de animación ya unido a ellos.
Tienen una velocidad establecida.
La razón por la que la velocidad se establece en dos es que es la mejor velocidad para la animación de caminar.
Así que cuando tienes un personaje animado y es un agente, tienes que intentar sincronizar la velocidad
del agente con la velocidad de la propia animación para que parezca bastante creíble.
Muy bien.
Así que, llegados a este punto, vamos a pulsar el play y a echar un vistazo a lo que conseguimos con estos personajes en concreto.
Verás que pasan directamente a su estado de reposo.
Están esperando que se les dé una meta hacia la que caminar.
Así que vamos a hacer eso.
Y vamos a usar nuestro script de control de ojos que usamos antes.
Así que vamos a abrir eso y vamos a hacer algunas modificaciones.
Muy bien.
Así que vamos a, en primer lugar, sólo deshacerse de la pública de nuestro objeto de juego aquí y en realidad
lo convierten en una matriz porque vamos a tener varias posiciones.
Así que vamos a ir a ubicaciones que llamaremos esto.
Entonces tenemos a nuestro agente como antes.
Eso está bien.
Ahora el agente aquí va a conseguir el agente de malla en el personaje.
A continuación, también queremos leer en todos nuestros objetivos.
Así que iremos a goal locations equals game object dot encontrar objetos con etiqueta y tenemos que crear algunos objetivos y realmente
establecerlos a la etiqueta de la meta así.
Así que va a poblar nuestras ubicaciones de la meta y luego el destino establecido, va a obtener algo de la ubicación
de la meta.
Así que gol.
Ubicaciones y obtendremos un valor aleatorio de eso.
Así que permítanme poner por encima de esto.
Tendremos una INT para.
Así que lo llamaré el índice dentro de las ubicaciones de la meta y lo estableceré en un rango aleatorio entre cero y la longitud
del punto de las ubicaciones de la meta.
Y eso nos dará el índice en esa matriz allí.
Entonces, una vez que tenemos eso, queremos conseguir la posición.
Así que transfórmalo.
La posición es así.
¿Verdad?
Así que guarda eso.
Ahora volvamos a la unidad.
Y lo que vamos a hacer es seleccionar todos nuestros personajes aquí.
Y arrastra y suelta el controlador aéreo sobre ellos.
De acuerdo.
Ahora tenemos que crear algunas ubicaciones de la meta.
Así que vamos a subir a nuestra escena y nos desplazaremos un poco.
Vamos a entrar en una jerarquía, haga clic en el botón derecho del objeto 3D, crear un cubo.
Ahora ese cubo no necesita ser tan grande y vamos a deshacernos del colisionador de cajas
en él para poder reducirlo.
Es sólo una ubicación.
Veamos.
Pero queremos que esté en el suelo, así que vamos a mover eso hacia abajo.
Así que está realmente en el suelo.
De acuerdo.
Y ya que estamos aquí, vamos a etiquetarlo.
Así que vete a añadir etiqueta, añade meta con minúsculas para la etiqueta, haz clic en ese cubo y luego ponlo en meta.
Ahora, una vez que hemos establecido una ubicación de la meta, podemos crear otra.
Así que duplica ese cubo y ponlo aquí.
Muy bien, entonces estamos listos para probar esto.
Déjame comprobar hacia dónde apunta mi cámara.
Sí, está bien.
Ahora vamos a pulsar el play y echar un vistazo a dónde van, así que van a elegir un lugar al azar.
Fíjate que se deslizan en el estado de reposo hacia él.
Está bien por ahora.
Pero puedes ver que estos tipos seleccionaron esta ubicación y estos tipos seleccionaron esa ubicación.
Y si añades más goles, entonces irán a diferentes lugares al azar.
De acuerdo.
Así que ahora vamos a añadir nuestra animación.
Así que en la parte superior de nuestro código, vamos a poner animador.
Adam.
Y entonces nos haremos con eso aquí abajo en el inicio.
Así que vamos Adán es igual a este punto obtener componente en corchetes animador y luego podemos establecer el gatillo así que
Adán punto establecer gatillo y luego dentro de aquí queremos poner la cadena que representa el gatillo que queremos
desencadenar, supongo.
Bien, ¿qué es eso?
Volvamos rápidamente a unity, cojamos uno de nuestros personajes y vayamos a nuestro animador y echemos un vistazo.
Así que vamos a ir desde el ídolo a caminar, que es esta flecha aquí.
Así que esta transición es si usted tiene una mirada sobre el inspector está caminando capital W es lo que está escrito aquí.
Tiene que ser exactamente la misma ortografía y mayúsculas en el guión.
Bien, volvamos a nuestro script y aquí pondremos es caminar así.
Bien, guardemos eso y ahora volveremos a nuestra escena y pulsaremos el play y podrás ver a los personajes
ejecutando la animación de caminar hacia su ubicación de meta.
Así que se van y se ponen a caminar.
Ahora, una vez que llegan allí, porque son unos cuantos, se pelean por llegar
al destino o no.
Así que se apartan unos a otros, lo cual es un comportamiento interesante.
De nuevo, este es un comportamiento inherente.
No los hemos programado para que lo hagan, sino que lo hacen, lo que parece bastante limpio.
Así que modifiquemos el código un poco más para que cuando lleguen a su destino,
realmente vayan a otro lugar.
Así que vamos a poner si la distancia restante del agente es menor que uno, entonces han llegado a su destino y si lo han hecho, vamos
a agente establecer destino básicamente quiere hacer esta línea aquí de nuevo.
Busquemos otra ubicación al azar y vayamos hasta allí.
Bien, guarda eso.
Volvamos a la unidad ahora con los cubos que tienes para las ubicaciones de los
objetivos, puedes duplicarlos y moverlos a donde quieras así.
De acuerdo.
Y entonces podemos conseguir nuestro grupo de personas.
Así que selecciona con shift todos esos y pulsa control.
D Y mientras tenemos a ese grupo, podríamos moverlos fuera y luego controlar a D y moverlos fuera y controlar
a D y moverlos fuera.
Ahora tenemos un público mucho más numeroso.
Pulsemos el play y veamos cómo se pasean por la escena.
Así que se van.
Van a encontrar un lugar al azar para ir y cuando lo hayan alcanzado, irán a otro lugar
al azar.
Así que puedes ver que toman una decisión cuando llegan allí.
Déjame volver en la próxima conferencia.
Continuaremos con esto y echaremos un vistazo a algún tipo de comportamiento más complejo para la aglomeración.