Bienvenido de nuevo a la Parte 2 de esta conferencia sobre la creación de waypoints y la búsqueda de rutas A *.
Hasta ahora hemos creado un mapa con un tanque que es nuestro NPC y una serie de puntos de referencia
en los que hemos creado bordes para construir un gráfico.
También hemos agregado el código del gráfico, que contiene un algoritmo A * y podremos pedirle al gráfico que nos encuentre una
ruta entre uno y otro de nuestros puntos de referencia. En el código FollowPath que se adjunta a
nuestro tanque,
hay dos funciones públicas.
Uno es ir al helipuerto o GoToHeli y el
otro es GoToRuin, que nos llevará hasta la parte posterior del mapa donde hay un tanque
en ruinas allí.
Cada uno de estos ejecuta el algoritmo A * desde nuestro nodo actual a una posición específica en función de dónde está
el punto de referencia, en la matriz de puntos de referencia.
Ahora nuestro trabajo es llamar a estas funciones desde fuera de aquí y usar botones.
Entonces, con todo eso listo y listo, vamos a la Jerarquía y simplemente haremos clic
derecho, bajaremos a 'UI' y buscaremos 'Botón'. Eso va a crear un lienzo, un botón (obviamente) que
se unirá
al lienzo y este EventSystem.
Ahora este botón aparecerá en la escena.
Si vas a la vista 2D y alejas un poco, encontraremos el botón ... ahí está y se muestra en el
lienzo.
Este marco blanco te muestra los extremos de lo que tienes en la vista Juego, que está aquí. Puedes ver el botón allí y
la escena en sí está aquí abajo.
Si no ha usado el sistema UI antes, solo tenga en cuenta que la escena en sí (la escena 2D) y la
escena 3D no están
relacionadas entre sí en esta vista. Así que no pienses que necesitas mover el botón y pegarlo sobre la
parte superior del paisaje porque así no es como funciona.
Este botón está en esta pantalla, dentro de estas dimensiones.
Vamos a moverlo hacia la esquina
superior, así que simplemente seleccione el botón y haga clic en este cuadro de ubicación Transformar rectificar y queremos hacer clic en la esquina superior
y queremos mantener presionada la tecla Alt al mismo tiempo y hacer clic nuevamente, lo que reubicará el botón
en esa esquina superior.
Ahora no quiero ese botón EXACTAMENTE arriba en la esquina superior, así que voy a seleccionarlo
y solo moverlo un poco hacia abajo, así que cuando miras la vista del juego no está atascado allí arriba, es justo ahí.
Todo bien.
Entonces, la otra cosa que queremos hacer es cambiar ese texto. Debajo del botón, si hace clic, hay un elemento de texto
y
esto nos da el texto que se muestra en el botón.
Esto será 'Ir al helipuerto' y eso es lo que hará cuando hagamos clic en él. Antes de que podamos hacer que el botón ejecute el código que
queremos, ese código debe existir
en la Jerarquía en algún lugar y actualmente no lo hace. El código FollowPath está listo para
adjuntarlo a nuestro tanque. Seleccione su tanque, arrastre y suelte el FollowPath sobre él.
Ahora, si recuerdas, hay una referencia del administrador de puntos de referencia que debe tener, para que pueda agarrar
todos los puntos de referencia y el gráfico, etc.
Así que solo obtenga su WPManager y asegúrese de conectarlo a su tanque.
Una vez hecho esto, ahora podemos volver al botón y en la parte inferior del inspector de botones, hay un área
'Al hacer clic'.
Ahora puede parecer que esta lista está vacía.
Haga clic en el signo '+' y luego queremos seleccionar el objeto que tiene ese código.
Ese es ese tanque.
Así que coloque el tanque allí y seleccionamos la función.
Así que despliegue este cuadro y verá que tiene FollowPath adjunto.
Ahora en la lista (que está justo fuera de su
pantalla, podemos traer esto en un momento) 'FollowPath' y luego le mostrará todo lo que pueda ejecutar que esté
asociado con ese código FollowPath y encontrará sus funciones GoToHeli y GoToRuin en ahí.
Entonces podemos seleccionar ese GoToHeli y
ahora cuando se hace clic en ese botón, ejecutará esa función en el tanque, lo cual es muy agradable y conveniente.
Lo último que debemos hacer antes de presionar Reproducir es asegurarnos de que podamos ver
lo que está sucediendo en nuestra escena de Juego. Puedes ver aquí que el juego no está buscando donde queremos que esté.
Así que voy a ir a la escena y salir de la vista 2D, encontrar el tanque y luego desplazarme
y simplemente manipular esto.
Solo quiero poder ver qué sucede cuando lo ejecutamos, básicamente.
Entonces ahí vamos.
Ahora seleccionaremos la cámara e iremos a 'GameObject> Align With View' para que el juego esté mirando la escena donde
podremos ver lo que está sucediendo.
Bien, ahora presiona Play.
Nada pasará.
Tenga en cuenta que todos los puntos
de ruta desaparecen y eso se debe a que el código gráfico en sí mismo se apoderará de todos esos
nodos y apagará todas las cosas que se muestran, por lo que no los verá en la ejecución final del juego.
Presiona [Ir a Helipuerto] y puedes ver que el tanque va al primer punto de ruta que
necesita porque está más
cerca de aquí y luego tomará el camino directamente de allí a allá y
cuando llegue al heli, lo hará detente porque no tiene nada más que hacer desde allí.
Okay.
Así que ahora programemos para ir a las Ruinas. El proceso es el mismo, mantén presionado el botón en el lienzo y
simplemente presiona Ctrl-D, lo que te creará un botón duplicado. Vaya a la escena y vaya a la
versión 2D de la escena, encuentre ese botón, ahora para seleccionarlo, simplemente haga clic en este icono aquí, para obtener los pequeños puntos
azules a su alrededor. Eso le permite cambiar su tamaño y moverlo. Asegúrate de que estás moviendo el correcto. Mueve eso
hacia abajo justo debajo
y mientras estemos allí, vamos a cambiar el texto a Ir a la ruina.
Ahora va a tener un 'On Click' en su botón, así que subes al botón.
Tiene el 'GoToHeli ()' porque lo duplicamos del botón anterior.
Ahora podemos encontrar la otra función, que es 'GoToRuin' y agregarla allí.
Muy bien, así que ahora presionemos Reproducir y deberíamos poder ir al helipuerto, que llevará nuestro tanque en primer lugar a nuestro punto de
ruta actual hasta aquí, en ese punto lo establecerá
en el punto de ruta actual ...
y pare y luego haga clic en [Ir a la ruina].
Ahora no va a tomar este camino de regreso hasta allí porque es mucho más
rápido para ir de esta manera debido a la distancia que está calculando A * y puedes ver ahora
que está siguiendo el camino, había un punto de referencia allí, hay un punto de referencia aquí al que tiene que
llegar, para
evitar estas rocas y luego irá al punto de referencia allá arriba.
Vale genial.
Entonces eso está funcionando.
Lo último que hay que probar es el punto que tuvimos aquí donde solo hay una conexión unidireccional.
Entonces duplicaremos el botón de Ruina, lo moveremos hacia abajo y luego cambiaremos el texto a 'Ir a los tanques'
y para su botón, ejecutará una función que aún no hemos
escrito.
Así que necesitamos volver a nuestro código FollowPath y vamos a copiar uno de los métodos 'GoTo'
que
teníamos antes y pegarlo debajo y esta vez 'GoToTanks' y los tanques están en el punto de referencia número 9 (que es 8 en
la matriz) y nos aseguramos de establecer el punto de ruta actual de nuevo a
0 antes de comenzar.
Así que guárdelo, vuelva a Unity y luego mantenga presionado ese botón y configure su función para la que acabamos
de escribir, que era 'GoToTanks'. Con todo eso guardado, estamos
listos para jugar.
Entonces, comencemos yendo directamente al tanque.
En primer lugar, tiene que ir a su punto de ruta actual, que es este
primero aquí y luego seguirá el camino que tiene.
No puede cruzar hasta aquí porque tiene que volver a este que está allá abajo, que es nuestra intersección.
Ahora va a venir y terminará cerca de los tanques de almacenamiento. En este punto, digamos
que queremos ir a la Ruina. La distancia más corta sería así, pero no puede retroceder por
ese camino.
Así que echemos un vistazo a lo que sucede.
Va a dar la vuelta porque ha encontrado un camino que
dará la vuelta y luego volverá y se unirá con ese punto de referencia que está justo aquí, para luego tomar
el que está aquí y terminar allí.
Así que ese es el algoritmo A * y los puntos de referencia y puedes ver lo poderoso que es. Calcular distancias es muy rápido
y puede usarlas para navegar por todo tipo de terrenos diferentes.
Así que ya sabes, ¡diviértete!
Juegue con él, coloque sus propios mapas y vea qué se le ocurre.