En esta conferencia, empezaremos a ver una de las técnicas de IA más fundamentales utilizadas en los puntos
de navegación.
Los puntos de ruta son simplemente posiciones en un mapa que, cuando se navega en secuencia, producen una ruta.
Es el mismo sistema que se utiliza en el GPS de un coche que te da instrucciones sobre dónde conducir.
Los Waypoints son un sistema fácil de implementar en un NPC ya que los hace parecer más inteligentes de lo
que son.
Y al proporcionarles un conjunto seguro de ubicaciones en un mapa entre las que moverse, también pueden evitar los obstáculos.
Ya hemos creado una embajada que puede moverse y seguir una ubicación de meta.
Actualizar esto a un sistema de waypoints es sencillo.
En este vídeo, vamos a montar un sistema de waypoints y hacer que estos tanques vayan
de uno a otro en un circuito.
Para empezar, necesitas el recurso de inicio que se adjunta a esta conferencia.
Así que descarga que abrir un nuevo proyecto de la unidad y llevar esos recursos en.
En su interior.
Vas a encontrar una escena llamada Tank Racing, y si abres esa escena, obtendrás algo como
esto.
Así que tenemos un suelo que está hecho de un cubo que se estira con una textura en él.
Hay cuatro tanques de diferentes colores y hay una palmera, la palmera que usaremos para nuestros waypoints.
Esencialmente, un waypoint sólo necesita ser una posición 3D o 2D.
Si estás en un mapa 2D, eso es en algún lugar de tu entorno de juego.
Por lo general, cuando estoy poniendo puntos de referencia para, por ejemplo, una pista de carreras o dentro de un mapa del juego,
entonces yo sólo uso la esfera o un cubo en la unidad sólo para que pueda ver dónde está.
Y más tarde puedes eliminar su renderizador y asegurarte, por supuesto, si tienes waypoints,
de que quitas cualquier colisionador porque no están realmente en el entorno.
Sólo nos muestran las posiciones entre las que deben ir nuestros personajes controlados por la IA.
Pero en este caso, estoy usando una palmera para que podamos verla.
Y en este tipo de escena desértica, tiene sentido.
Supongo que con tu palmera, lo que tienes que hacer es controlar DX para duplicarla, luego pulsar la tecla w y posiblemente
en una vista superior hacia abajo.
Sólo mueve esa palmera, intenta mantenerla en el plano, pero sólo muévela.
Y lo que vamos a hacer es hacer un pequeño circuito con él.
Controla D de nuevo, coge el duplicado y luego Controla D.
Hazlo tú mismo.
Sólo un poco circular.
Cosa que su tanque puede rodear.
De acuerdo.
Así que este tanque va a ir alrededor de estos y utilizarlo como una especie de pista de carreras.
Y estos son los puntos de la bandera para ello.
Muy bien.
Así que ahora vamos a escribir algo de código para lograr esto.
Así que ve a crear C-agudo abajo en tus activos.
Y vamos a llamar a este punto de ruta de seguimiento.
Así que sigue a woop y luego abre eso.
En primer lugar, tu script necesita conocer los puntos de ruta en sí mismos y vamos a ponerlos
en un array de objetos del juego.
Así que crea un array de objetos de juego público para tus waypoints.
Entonces también necesitamos un entero para saber en qué waypoint estamos.
Así que llamaremos a ese waypoint actual y lo pondremos a un valor de cero.
Porque el índice de tu matriz siempre empieza en cero.
Así que ese primer árbol será el punto de partida.
Bien, ahora tenemos que mover nuestro tanque y por lo tanto, mientras estamos aquí arriba, vamos a crear
un flotador público para la velocidad.
Y lo pondremos a 10. 0 F y, por supuesto, puedes cambiar eso como quieras.
Muy bien.
No necesitamos un inicio en este punto, pero abajo en la actualización, básicamente vamos a hacer un bucle a través de todos estos
waypoints.
Pero no queremos ir al siguiente waypoint hasta que hayamos llegado al siguiente waypoint.
¿Tiene sentido?
De acuerdo.
Así que empezamos en el Waypoint cero y luego probamos si estamos lo suficientemente cerca de ese waypoint y luego vamos
al siguiente waypoint.
Ahora, ¿recuerdas cómo probamos para saber si nuestro personaje está realmente cerca de su ubicación de meta?
Porque esto es lo que tenemos que hacer para cada waypoint.
Así que tenemos que usar una distancia.
Y aquí voy a poner si vector tres.
Distancia de puntos, por lo que utilizaremos la biblioteca de matemáticas de Unity en lugar de volver a escribir la nuestra.
Y vamos a encontrar la distancia entre esta posición de punto de transformación.
Así que eso va a ser el tanque y los puntos de ruta.
Punto blanco actual.
Así que este es el primer punto de paso cuando llegamos aquí por primera vez.
Transformar la posición.
Y luego tenemos que decir, bueno, ¿cuándo estamos lo suficientemente cerca de ese punto de ruta en particular?
Así que digamos que si es menos de tres, consideraremos que hemos llegado a ese waypoint.
Y cuando lo hagamos, vamos a actualizar lo que es el waypoint actual, el waypoint actual más el plus.
Entonces el waypoint actual será uno y por lo tanto podemos empezar a dirigirnos hacia él.
Ahora bien, en algún momento nuestros puntos de ruta se van a agotar.
Digamos que tenemos diez puntos de ruta.
En algún momento, el waypoint actual va a ser un valor de índice de diez o más, que no existirá
dentro de este array.
Porque si tienes diez waypoints, entonces sólo tienes índices de 0 a 9.
Ahora, cuando eso ocurra, tenemos que volver a cambiar nuestro waypoint actual por el primero.
Así que si el waypoint actual es mayor o igual que la longitud de nuestros waypoints.
Entonces vamos a ir a waypoint actual es igual
a cero y también vamos a escribirlo correctamente.
Bien, ahí está nuestro punto de ruta actual.
Así que ahora nos hemos encargado de ir al siguiente waypoint y también de volver al waypoint cero si llegamos
al final.
Lo siguiente que tenemos que hacer es empujar nuestro tanque hacia adelante.
Así que vamos a cultivar este punto, transformar el punto, mirar y recordar lo que hace.
Hará que tu personaje mire hacia otro lugar.
Así que en este caso, queremos mirar el siguiente waypoint o mirar el waypoint al que nos dirigimos.
Así que waypoints actual punto de transformación
y, a continuación, este punto de transformación tendencias tarde cero cero.
Así que nada en las direcciones X e Y, pero queremos ir a lo largo de la z a la velocidad multiplicada por el tiempo.
El tiempo de Dot Delta porque estamos dentro de la actualización.
Muy bien.
Así que guarda eso.
Vuelve a la unidad y tenemos que poner esto en un tanque.
Así que vamos a empezar con un tanque.
Así que selecciona tu tanque verde o el que quieras.
Arrastra y suelta ese script de seguimiento de puntos de ruta allí.
De acuerdo.
Ahora tenemos nuestra matriz de waypoints en la parte superior aquí que podemos poner todas estas palmeras en.
Ahora puedes ponerlos uno por uno, o puedes seleccionarlos todos.
Si los creaste en un circuito en el orden de tu circuito, entonces va a ser mucho más fácil simplemente arrastrar y soltar
todo el lote y entonces terminarán en el orden correcto en la matriz de waypoints.
Así que sube a la parte superior y haz clic en el pequeño candado que bloqueará esta vista del inspector.
Luego, en la jerarquía, puedes seleccionar el primer turno de la palmera, seleccionar la última palmera,
y simplemente arrastrar y soltar estos en los puntos de ruta, y que va a poblar toda esa matriz en el orden correcto.
Recuerda que vamos de un punto de paso a otro.
Por lo tanto, si cambias estos pedidos, ese será el camino que seguirá el tanque.
Bien, recordemos que debemos desbloquear nuestra vista de inspector y ahora estamos listos para probar esto.
Así que pulsa el play y veremos que nuestro tanque se desplaza por los waypoints.
De acuerdo.
Así que con nuestra configuración actual, tenemos nuestra mirada en lo que está haciendo nuestro tanque de encajar alrededor de mirar a los nuevos
puntos de ruta.
Esa es una forma poco natural de que un personaje se mueva.
En realidad, queremos que gire más despacio y de forma más natural hacia el siguiente waypoint.
Así que en el próximo vídeo, volveremos a tratar ese tema.