Bien, con el fantasma listo, lo siguiente que le tocáis es ir a patrullar la casa para poder patrullar.
Y de hecho, esa es la palabra técnica que se utiliza cuando un ser inteligente, cuando una guía se
tiene que mover por un lugar dado sin atravesar paredes ni hacer cosas malas.
Entonces ahora el fantasma está listo para poder deambular por el entorno.
Para ello, el fantasma va a necesitar dos componentes nuevas.
Una va a ser un NAF más agent o agente de navegación a través de mallas que le permita al fantasma encontrar
senderos por la zona de color azul.
Él se va a mover por la zona de color azul y le va a permitir encontrar el punto más corto de ruta para
llegar del punto A al punto B.
De hecho, os acordáis que ya habíamos bloqueado esta zona?
Si tuviéramos otro escenario, en lugar de ser éste fuera otro?
Pues evidentemente habría que volver a bloquear.
De hecho, si colocamos un fantasma aquí dentro, dentro de esta sala, veis que no tendrá forma humana
de salir ni fantasmagóricas de salir de una forma en la que podríamos hacerlo.
Sería que las puertas no fueran estáticas, que se pudieran atravesar y que los fantasmas pudieran ir
a través de las puertas.
Pero ahora esta habitación está totalmente sellada.
Es inaccesible.
Lo veis?
Entonces la gracia está que cuando yo le añada el NAF Match junto al fantasma, podrá patrullar, moverse
por esta zona de color azul que ya ha sido bloqueada previamente.
Así que ese es el primero de los dos.
De las dos componentes que vamos a utilizar, la segunda será un script que le va a decir al fantasma
en todo momento dónde ir.
Para ello utilizaremos un sistema muy, muy útil que es el sistema de uoi points o de puntos de ruta.
Será una colección de puntos y el fantasma podrá decidir o bien preprogramada o bien aleatoriamente,
el siguiente punto de ruta al que quiere acceder.
De modo que habrá fantasmas patrullando por la casa.
Cuanto más aleatorio sea, más difícil será el juego.
Como siempre.
Entonces empecemos por el principio con el fantasmitas seleccionado.
La componente que vamos a necesitar en este caso es la llamada NAF Match Edgeworth.
Lo habéis naf Magee Eugen y se lo vamos a asignar.
Por cierto, hay otro llamado NAF Moiss obstáculo.
Una mayor obstáculo es cuando quieres una piedra y en medio que sea esquivada por el ser inteligente,
le pones que es un obstáculo y es el obstáculo que el ser inteligente va a intentar esquivar.
En nuestro caso es el agente, que es el que lleva la flechita para que no sabía si era un bastón.
Digo, he puesto un bastón de ciego en serio, no una flecha de color azul.
Entonces Naf Edgerton.
Ahí lo tenéis.
Recordad que habíamos definido el agente de tipo humanoide aquí.
Bueno, he dicho, no lo había definido ya estaba de serie.
Va a tomar las características definidas aquí como humanoides.
En este caso.
De acuerdo.
Entonces ese es el tipo de agente.
Y para la gran mayoría de cosas se pueden utilizar los componentes que hay aquí por defecto.
Los más interesantes son el speed, que es la velocidad lineal, el angular speed que es la capacidad
de rotación, la velocidad de rotación, la aceleración y la distancia de parada.
De acuerdo, en particular, ahora que le he añadido esta cosa, veis que al fantasma le ha salido una
aureola alrededor aquí un cilindro.
Este cilindro es la componente precisamente del humanoide.
Veis que el humanoide tiene un radio o tenía un radio antes de que me lo cargara de 0 5.
Lo veis entonces?
Claro, si el radio del humanoide es 0 5, lo que le pasa es que ahora está muy gordo.
Lo veis que le sobra.
Se puede cambiar desde aquí y volver a construirlo.
O normalmente lo que hacemos es cambiarlo.
Aquí veis que Obstácu la Weyden Radius 0 5 sí?
Pues no 025.
Que es el que se ajusta mejor al fantasma.
La altura del NAF me.
También a ver, le he puesto altura de dos metros.
Por tanto, parece que tiene aquí un florero en la cabeza.
Lo que pasa es que la altura del fantasma no será tan crítica.
Vale más que nada porque no hay techo y las puertas no tienen.
No tienen.
Aquí la cosa está entonces.
O sea, podéis bajar a uno coma dos.
Creo que era o mantenerlo alto, porque total, no hay techo.
En este caso no influiría.
Aquí sí que hay cosas interesantes y es la velocidad.
Velocidad 3,5 es muy grande.
Vale, es muy grande.
Un fantasma.
Tres metros y medio por segundo.
Caminar a buen ritmo para un fantasma que lo que quieres es que lo puedes bajar a un metro o metro y
medio por segundo.
Si lo ponéis a tres y medio, qué pasará, que el juego será muy difícil.
Podría ser un incremento de dificultad.
Otra que también es muy interesante es la topping distant.
Este siempre me ha hecho gracia porque las topping distan saber el objetivo de ser inteligentes y llegar
a un punto.
Las topping distantes.
A qué distancia de este punto tienes que parar?
Y por defecto lo ponen en cero.
Lo que pasa es que el cero no existe a distancia cero.
Es imposible que lleguéis porque siempre habrá una pequeña precisión que no podréis alcanzar.
Entonces me hace mucha gracia porque lo pone en cero, pero luego lo pones en cero y lo que pasará es
que el ser inteligente empezará a dar vueltas como un gilipollas, que esto seguro que lo habéis visto
muchos videojuegos.
Esto es cuando te crees que puedes llegar a conseguir distancia cero con tu objetivo, pero es imposible
que llegues a distancia cero.
A ver, aquí todavía podríais conseguirlo por un motivo.
El suelo es plano y no jugáis con el factor altura.
Cuando es en 3D distancia cero es imposible.
Yo lo que suelo hacer es poner 10 centímetros o 20 centímetros.
20 está bien, a 20 centímetros te puedes parar.
No necesitáis ser muy precisos en los puntos de navegación.
O sea, esto no es un juego de precisión, sobretodo en el caso del ser inteligente.
Cuando te estés llegando a 20 centímetros, te paras hasta el auto frenado.
Querrás decir que paulatinamente irá disminuyendo la velocidad cuando llegue a su sitio.
Y básicamente esto es la configuración del ser inteligente.
Ya está.
Fin.
No tiene más.
Es muy fácil.
Ahora lo que necesita es un destino porque es algo que tenga un destino.
Se va a quedar quieto.
O sea, si le dais al play, no os penséis que se empieza a pasear por donde le da la gana.
El fantasma no está quieto porque no le habéis dicho donde tiene que ir.
Entonces el NAB de Jaejoong le podremos dar destinos.
Esos destinos en programación normalmente se llaman Way Points, puntos de ruta y se suele enmarcar
con algún gizmo o algo visual que nos dé la idea de donde están porque son invisibles.
Entonces voy a empezar al revés de como lo hago normalmente voy a empezar por el script y luego ya a
crear el objeto.
Vamos a crear un nuevo script que se va a encargar de guardar el sistema de puntos de navegación de
way points y que establecerá la ruta al fantasma.
Entonces le voy a llamar Patrulla Wapping Patrol Boy Paint Patrol Patrulla en forma de points, en forma
de puntos de ruta.
En este caso, el Weapon Patrol se lo voy a dar al fantasma, que es quien va a patrullar.
Se lo suelto al fantasma aquí en el lateral y el fantasma ahora tiene el Weapon Patrol y ahora podemos
doble clic sobre el Weapon Patrol, abrirlo y configurarlo por aquí dentro.
Antes de programarlo, consideremos qué es lo que tiene que hacer, lo que tiene que hacer es configurar
el destino de nuestro NAF Match Agent.
Cuando la escena carga por primera vez y el fantasma PUP recién aparece, y también cuando llega al
destino, cuando ha llegado al destino, querréis que vaya al siguiente destino, porque si no se va
a estar quieto.
Entonces una cosa va en el start cuando arranca el juego.
La otra irá en el app.
Dónde creéis que gestionarse ya ha llegado al destino?
Así que en nuestro caso lo que vamos a hacer es lo siguiente para poder acceder al NAF Match Eijik necesitáis
un My Space, una librería que se llama Ussing Unity Engine Punto A y artificial inteligencia artificial
inteligentes.
Esto os va a dar acceso a la clase NAF Match junto, por supuesto, como parte de la clase.
Voy a necesitar acceder a Public NAF Agent Naf Maik.
Esta referencia pública al componente nos permitirá asignar desde el inspector de todas formas, a quién
le hemos dado el patrón este?
Al fantasma, en lugar de hacerla privada pública la puedo hacer privada si preferís y hacer en el estar
que nada mejor.
Ya sabéis cómo va esto.
Igual a recomponen y diamantes componen y entre diamantes más gente sí.
Y así os ahorráis un paso.
De hecho, si no queréis que esto es PT, queréis estar seguros que el fantasma tiene unas mechas jan
encima de la clase que podéis colocar entre corchetes.
Component.
Tipo Naf mhhh.
Cuantos más niveles de seguridad metáis en vuestro código, menos más difícil es que metáis la gamba
o que alguien utilice mal vuestros scripts.
Ahora voy a necesitar configurar los puntos de navegación, los way points que fantasma debe patrullar
el destino siempre es un vector 3, independientemente de donde querais ir, siempre es una posición
en el espacio y por tanto un vector 3 la posición dentro del World Space.
Pero si hacemos que los puntos de navegación sean vector 3, tendremos que configurar manualmente todas
las posiciones y esperar que los números que utilicemos sean correctos.
Entonces, en vez de esto, sobre todo de generarlos a mano, lo que se suele hacer es.
Aquí creamos una variable pública, no de tipo vector 3, porque recordad del vector 3 no os podéis
arrastrar, sino que tiene que ser de tipo transform.
Corchetes y le llamo los puntos de ruta.
Los White Plains Boys, que los he guardado en una raíz y no los puedes guardar en una lista, si los
podéis guardar en una lista.
Pero este es el caso perfecto donde los way points os vais a poner en el mapa.
Si lo vais a poner en el mapa, el número será fijo.
No va a crecer ni a decrecer.
Por tanto, podéis usar un array.
No necesitáis una lista porque no necesitáis ni quitar ni añadir puntos al sistema.
Y ahora, por lo menos para probar lo que voy a hacer es lo siguiente en el start cuando empecemos voy
a mandar al fantasma al primer Wapping.
Cuál será?
No lo sé, pero lo voy a mandar ahí.
Entonces voy a hacer lo siguiente al NAF Masajean, le voy a poner un set destination y el destino va
a ser de la raíz de Uoi Point.
El primero, recordad que el primero es el que está en posición 0 corchete 0.
Y como es un transformer, tiene position rotation y skay punto position.
Vale.
Ahora qué significa?
Pues que ahora podéis añadir todos los destinos que os de la gana en el editor.
Por ejemplo, voy a hacer una prueba aquí, voy a crear de momento un GameObject vacío.
Ahora te pongo el código tranquilo.
Tengo el código, ahora te lo pongo.
Voy a crear aquí un objeto vacío way points, puntos de ruta en el 0 0 0.
Y dentro de esto voy Pains.
Voy a ir creando diferentes way points.
Por ejemplo, voy a crear uno vacío donde queréis que vaya al fantasma.
Aquí abajo no hay aquí, por ejemplo.
Vale, es aquí.
Entonces este será el primero de los way points, más arriba, más abajo.
Lo voy a marcar con un gizmo para que se vea.
Aquí es donde tienen que ir el fantasma, vale.
Entonces este es el way point número uno, para que lo veáis bien.
Si yo al fantasma, al Ghost, le digo que se venga al primer way point.
Fijaros lo que ocurre cuando le doy al play.
Bueno, hasta luego, se va al West Point y se queda allí esperando el momento.
Veis cómo funciona?
Es decir, que yo aquí por el mapa voy a tener puntitos que luego colocaremos estratégicamente y el
fantasma va a decidir irse a uno o a otro.
En este caso se ha ido al primero para probar que funciona.
Además, luego lo vamos a cambiar.
No lo voy a hacer así.
Pero veis cómo soy capaz de irme al primer punto de la ruta al way points corchete 0, punto position
al primero de todos.
De acuerdo.
Vale, pues aseguraros que tenéis todos al menos un punto de ruta y que el fantasma va hasta ese punto
de ruta.
Recordad la la fase 1 es este código, el Weapon Patrol que os lo tenga el fantasma declarada con la
variable public transform corchetes y dentro del start después del get component asignas el destino
wapping corchete cero punto position.
Es mi primer destino, el primero que hay allí dentro.
La fase número 2 es aquí.
Vamos a tener todos los way points que queráis.
Por eso he creado un objeto vacío para que estén todos ahí.
Más que nada, este way point es el primero que acabo de asignar.
Está aquí arriba.
Bueno, hasta aquí.
Y lo que va a ocurrir será que cuando le demos al play como el ghost tiene el array con el punto de
ruta, veis que llega hasta aquí.
Bueno, no lo veis porque se me ha movido el frontal, pero veis que llega hasta aquí.
Sí, de hecho vamos a complicarlo un poco más.
Qué pasaría si el punto de ruta está aquí, detrás de esta pared?
Pues que el fantasma se viene por aquí.
El hijoputa sabe dónde está la puerta.
Sabe dónde está la otra puerta y se va para abajo.
La habéis visto?
No le tengo que decir dónde, por donde tiene que cruzar.
Es guía.
Eso se llama algoritmos de paz finding, de búsqueda de caminos.
Y el fantasma lo hace sólito.
Vale, por tanto, os dejo el código para que lo acabéis de copiar y de configurar, porque ahora la
gracia va a estar en añadir un montón de Waite.
De acuerdo, vale.