En esta conferencia, analizaremos el concepto de huida.
Es una técnica común utilizada en la IA para conseguir que un NPC se aleje de un lugar.
La técnica se puede utilizar en cualquier tipo de PNJ.
En este caso, lo aplicaremos a nuestra multitud.
Hemos estado trabajando en la huida matemática.
Funciona así.
Se introduce un objeto o lugar en un entorno.
El PNJ determina dónde está el objeto en relación con su propia posición.
A continuación, calculan una nueva ubicación de la meta que se aleja del objeto.
En este caso, utilizaremos la dirección exactamente opuesta.
Esto se puede calcular utilizando el vector hacia el objeto y alejándolo de la posición del NPC con la nueva
ubicación de la meta.
El agente puede darse la vuelta y empezar a dirigirse hacia él, alejándose así del objeto en cuestión.
Otros factores que podemos considerar son el radio de influencia del objeto y el periodo de enfriamiento.
El radio determina lo cerca que debe estar un PNJ de un objeto para que le afecte, y el enfriamiento es
el tiempo que el PNJ huye antes de volver a su comportamiento normal.
En las conferencias anteriores vimos cómo crear nuestra multitud.
Lo que vamos a hacer ahora es conseguir que huyan de un objeto potencialmente peligroso.
Así que voy a apagar algunas cosas que hemos estado usando y a encender otras.
Así que, en primer lugar, vas a desactivar los edificios y la tienda, así que voy a sacarlos
desmarcándolos para habilitar un inspector, la cámara principal.
Lo pondré de nuevo y mi controlador F P's, lo apagaré.
Ahora, una vez que hayas hecho eso, querrás ir a tu malla de navegación.
Y en la vista de la escena vamos a hacer un re bake porque queremos que la gente pueda caminar por todas partes.
Muy bien.
Así que ahora tenemos que encontrar nuestros cubos, que eran nuestros objetivos.
Bien, aquí hay uno aquí y aquí hay uno aquí, y hay otro justo aquí abajo.
Súbanlos para que juntos.
Ahora puedes moverlos o crear algunos más.
Así que voy a duplicar ese en la esquina y poner uno por allí y luego por aquí y por allá, sólo
queremos que la multitud se mueva alrededor de esta plaza.
De acuerdo.
Ahora vamos a añadir nuestro objeto indeseable del que queremos huir.
¿Verdad?
Así que voy a enrollar algunas de estas cosas.
De hecho, puede que coja a algunas de estas personas y las convierta en hijos de esta ciudad.
Objetos en bloque.
De hecho, puedo enrollarlos y deshacerme de todo este desorden extra que está ocurriendo dentro de la
jerarquía, lo que te permitirá verlo un poco más claro.
De acuerdo.
Así que pongamos a esta chica en el bloque de la ciudad también.
De acuerdo.
Así que ahora vamos a hacer clic derecho allí.
Y el objeto 3D.
Vamos a añadir un cilindro.
Ahora, el cilindro queremos moverlo hacia arriba para poder verlo.
Así que pulsa la tecla W.
Subámoslo por encima del suelo.
Asegúrese de que e está por encima del suelo y luego vamos a colorear que el verde.
Así que voy a crear un nuevo material.
Llámalo verde, hazlo verde.
Así que selecciónalo.
Y luego en el inspector, establecer el color para él, el color de albedo a verde, poner eso en el cilindro.
Ahora, con ese cilindro, se dejará caer cuando hagamos clic en el suelo.
Así que, básicamente, no lo queremos allí para empezar y vamos a conseguirlo y luego simplemente ponerlo en
la carpeta de activos, que creará un prefabricado de ese cilindro para nosotros.
Entonces podemos seguir adelante y eliminarlo de la jerarquía.
Ahora tenemos que añadir algo de código para colocar el cilindro en su sitio.
Así que abajo en sus activos, haga clic derecho Crear C-sharp script, vamos a llamarlo cilindro de caída y vamos a hacer
doble clic en eso y editarlo.
De acuerdo.
Así que, para empezar, necesitamos obtener el prefab del objeto que vamos a soltar.
Así que será un objeto de juego público.
Obstáculo.
Y luego queremos una matriz de objetos de juego de todos los agentes que están en la escena para que podamos decirles
que el obstáculo se ha caído en nuestro inicio.
Vamos a ir agentes iguales objeto de juego punto encontrar objetos de juego con la etiqueta.
Así que tenemos que etiquetar todos nuestros agentes con la etiqueta de agente, lo que haremos un poco más adelante.
Y en la actualización comprobaremos si hemos pulsado en el suelo y si es así, instanciaremos un cilindro verde.
Así que si el punto de entrada obtener el ratón.
Abotónate.
Es el botón izquierdo del ratón.
Entonces vamos a hacer una información del enganche del rayo.
Sí.
Va a igualar el punto de la pantalla principal de la cámara a la posición del ratón del punto de entrada del rayo.
Así que esta línea proyecta un rayo desde la posición del clic hacia el entorno y buscamos golpear algo.
Así que hacemos una física IFF.
Dot Ray.
Cast Ray.
Origen.
Ray.
Dirección.
Fuera.
Información sobre el golpe.
Entonces queremos instanciar.
Así que si hemos golpeado algo, vamos a instanciar nuestro obstáculo.
En el punto de información de impacto, el
obstáculo se transforma.
Rotación del punto, que sólo va a ser la rotación por defecto del obstáculo porque INSTANTIATE necesita una
rotación, por lo que vamos a poner uno allí para él y luego vamos a enviar el mensaje a cada agente que realmente
hemos dejado caer el cilindro.
Así que esto será una para cada objeto de juego A en los agentes.
Y por ahora no tenemos ningún código que vaya a hacer algo con eso.
Así que lo dejaremos vacío.
Y así no te da ningún error.
Vamos a comentarlo por ahora, pero dejémoslo ahí.
Así que guarda eso.
Ahora vamos a volver a la unidad.
Y quiero que arrastres y sueltes el script del cilindro de caída en tu cámara.
Puede estar en cualquier cosa de la escena siempre que esté en algún lugar.
Así que en mi cámara tengo un cilindro de caída aquí abajo.
El obstáculo tiene cilindros.
Tienes que arrastrar y soltar este cilindro prefabricado en ese lugar para que el cilindro se instancie.
La otra cosa es que este script que acabamos de crear utiliza la cámara principal y no será
capaz de encontrar la cámara principal a menos que la cámara esté etiquetada con cámara principal.
Así que cuando viene a través inicialmente esta cámara, creo que va a tener controlador de juego en la etiqueta
que tiene.
Asegúrate de ponerlo en el controlador principal.
De acuerdo.
Así que ahora vamos a pulsar el play y vamos a hacer clic en la superficie aquí y debemos obtener algunos cilindros.
Ahora recibo un error sobre una etiqueta no definida para la edad.
Eso es una multa.
Ignora eso porque volveremos a ponerlo en un momento.
Sí.
De acuerdo.
Así que ahora tenemos que averiguar cómo hacer que estos agentes huyan y volveremos a trabajar en ello en la próxima
conferencia.