En esta conferencia, vamos a ver la creación de un sistema de waypoints que puede ser navegado con el algoritmo
aStar para comenzar a descargar el archivo de recursos que viene con esta conferencia.
Y en ella encontrarás esta escena con el tanque.
Si has hecho alguno de los otros tutoriales proporcionados por Unity, habrás visto estos modelos antes, y los
uso bastante a menudo porque aunque son agradables de ver y son convenientes y fáciles, para que no pongamos
nuestro propio mapa.
Por supuesto, si quieres armar tu propio mapa, hazlo.
Eso está bien.
Ahora tenemos un mapa y también un pequeño tanque.
El tanque será nuestro personaje NPC.
Lo que vamos a hacer es colocar algunos puntos blancos alrededor del mapa y luego vamos a unirlos
con bordes y poner algunos botones en la pantalla para darle al tanque órdenes de hacia dónde ir.
Lo primero que haremos será colocar algunos waypoints.
Lo importante a recordar aquí es que no hay física o detección de colisiones que estará en este proyecto,
lo que significa que usted tiene que colocar puntos de ruta donde el tanque puede moverse.
Así que serán los caminos del proyecto.
He creado un activo de objeto de juego waypoint aquí, por lo que este prefabricado, si lo arrastro y lo
suelto en la escena, verás que automáticamente se da un número y cada vez que añadas un waypoint, contará para
ti.
Esto es para que puedas seguir el rastro de qué waypoint es cada uno sin tener que hacer clic en
él en la jerarquía cada vez.
Así que vamos a alejarnos.
Voy a tocar algunos waypoints alrededor de este mapa para llegar al helipuerto, que está aquí abajo,
y uno para llegar aquí y rodear este edificio.
Pero puedes jugar en algún sitio si quieres, así que lo haré rápidamente.
Con todos los puntos de ruta en su lugar, se convertirán en los nodos de nuestro gráfico.
Así que ahora tenemos que determinar dónde van a estar los bordes.
Y las aristas son las líneas que conectan los nodos y nos dirán por dónde puede viajar el tanque.
Como dije al principio, estos waypoints también van a especificar dónde no puede viajar el tanque,
y es que no queremos poner ningún camino a través de la geometría.
Así que también funciona como un sistema para evitar colisiones.
Y así puedes poner waypoints como este a través de edificios si quieres que tus NPCs viajen por ahí y parezca
que son inteligentes porque entonces están evitando obstáculos.
Así que en este caso podemos conectar el waypoint uno con el dos y el dos con el tres y el uno con el tres.
En cualquier lugar donde haya una línea de visión clara, podemos unirnos a ellos, así que no podemos llegar desde aquí hasta el número siete
del fondo yendo en esa dirección.
Así que pondremos líneas aquí y aquí e incluso podría poner un camino de ida que llegue hasta aquí para que
el tanque, si está por aquí y quiere volver, tenga que dar la vuelta por aquí.
Con todos los caminos planeados, tal vez quieras escribirlo para tener una referencia para
cuando vayamos a poner esta información en la unidad.
Ahora bien, antes de hacerlo, es posible que quieras cambiar el nombre de todos tus waypoints y numerarlos adecuadamente.
Así que estaba haciendo una duplicación de cada waypoint y moviéndose en el mapa, y eso significa
que la unidad les dio números impares como WP 003 era en realidad WP 002 y entre paréntesis uno.
Y luego había entre paréntesis dos, entre paréntesis tres.
Pero en lugar de eso, puede que quieras numerarlas así.
Así que parece un poco más lógico.
Y entonces verás que esos nombres aparecen correctamente en tu mapa para que puedas elaborar tu lista de aristas
entre todas ellas según el gráfico que acabas de elaborar, con las líneas entre ellas.
Ahora es el momento de empezar a crear algo de código.
Pero antes de hacerlo, necesitamos un objeto en la escena que va a gestionar todos los waypoints esencialmente.
Así que en la jerarquía, haz clic con el botón derecho y crea un vacío.
Y vamos a llamar a este objeto gestor de WP.
Así que este es nuestro gestor de puntos de ruta en eso.
Pondremos algo de código.
Así que vamos a ir al proyecto y crear una nueva secuencia de comandos C-sharp y también vamos a llamar a ese gestor de WP.
No importa si no son iguales.
Me gusta mantener la coherencia.
Ahora con ese gestor de WP, voy a arrastrarlo y soltarlo sobre nuestro objeto de juego vacío.
Sí.
Así que cuando tengas ese código, vamos a abrirlo.
Ahora, déjame hacer esta fuente un poco más grande para ti.
Así que creo que lo rechacé el otro día.
Bien, aquí lo que vamos a hacer, en primer lugar, es crear una pequeña estructura
en la parte superior para ayudarnos a que el inspector se vea bien cuando vayamos a enlazar todos estos nodos o waypoints,
debería decir, entre sí con las aristas o los caminos.
Así que vamos a crear un punto de sistema serializar capaz y luego una estructura rápida.
Así que estructura pública y lo llamaremos enlace.
Por lo tanto, esto define un enlace como en el borde o el camino entre dos nodos o puntos de paso.
Así que aquí tendremos public enum que establecerá una dirección para y esa dirección especificará
si el camino es de una o dos vías.
Ahora la mayoría de los caminos que hemos puesto son de dos vías.
De hecho, creo que todos los que estamos, no quieres que entre en una especie de callejón sin salida.
Si se tratara de un ciclo alrededor de esa fábrica que está en una parte del mapa, tal vez podrías tener un camino unidireccional
que fuera alrededor de eso para que sólo pudieras ir en una dirección alrededor de eso.
Bien, pongamos el nodo de objeto de juego público uno, el nodo de objeto de juego público dos.
Y entonces queremos una D pública por R, dirección d, i r.
Así que eso se mantendrá tanto si es un enlace único como si es bidireccional entre ellos.
Muy bien.
Así que lo hemos hecho.
Ahora, lo que vamos a hacer es poner algo de código en la propia clase.
Así que en la parte superior aquí, vamos a crear una matriz de objetos de juego.
Así que la matriz de objetos de juego público, que será nuestros puntos de ruta.
Entonces tendremos un array de enlaces públicos, que serán nuestros enlaces.
De acuerdo.
Ahora, una vez que tenemos esto, podemos configurar nuestro gráfico.
Ahora queremos utilizar una biblioteca gráfica oficial para ello.
Así que vamos a escribir el nuestro rápidamente, lo que significa que tenemos que salir de aquí y empezar a hacer eso en su lugar.
Así que vamos a guardar este código y voy a dejar esta conferencia aquí para que podamos ver
el código del gráfico por separado en otro conjunto de conferencias para que sea una especie de área definida.
Y luego volveremos a esto.
Bien, nos vemos en la próxima conferencia.