En esta conferencia, comenzaremos a ver uno de los A. más fundamentales. YO. Técnicas utilizadas en la navegación: Waypoints.
Los puntos de referencia son simplemente posiciones en un mapa que, cuando se navegan en secuencia, producen una ruta.
Es el mismo sistema utilizado en un automóvil G. pag. S.
eso 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 para moverse, también pueden evitar obstáculos.
Ya hemos creado un NPC que puede moverse y seguir una ubicación de objetivo. Actualizar esto a un sistema de
waypoint es sencillo. Para seguir, descargue el
proyecto asociado con esta conferencia y abra la escena del tanque. En la escena, encontrarás un pequeño tanque púrpura
y
este pequeño tanque púrpura será nuestro NPC. Para comenzar, necesitamos crear algunos puntos intermedios y
generalmente
los creo a partir de esferas para que pueda ver dónde están.
Así que en la Jerarquía, haz clic derecho y ve a Objeto 3D> Esfera y eso creará una esfera para ti.
También voy a colorearlo en rojo. Hay un material rojo en este archivo de proyecto.
Esto es solo para
que podamos verlo y también quieras quitar el Sphere Collider porque no quieres que sea un objeto físico.
Todo esto es, es un marcador para que nuestro tanque navegue.
Más adelante, incluso puede apagar su renderizador de malla cuando no quiera ver los puntos
de referencia, pero cuando los esté editando es bueno si sabe dónde están 'exactamente', en lugar de solo una transformación.
Bien, entonces este es un punto
intermedio y para que sea un punto intermedio, he creado una etiqueta y necesitarás asignar esta etiqueta a esta esfera, así que
solo ve al Inspector y mira la lista y tú ' Encontraré 'waypoint'.
Si no está allí (o si está creando su propio sistema), deberá agregar una etiqueta y luego regresar
y reasignar su etiqueta de waypoint a esta esfera.
Observe también cómo se deletrea porque
lo buscaremos más adelante.
Así que este es 'waypoint' todo en minúsculas.
Así que ahí está nuestro primer punto de referencia.
Ahora con eso creado, puedes moverlo a su lugar y luego Ctrl-D y hacer múltiples copias de él y hacer un
pequeño circuito para que el tanque se mueva.
Ni siquiera necesita ser perfectamente redondo.
Solo ve con algo así.
A continuación, crearemos un script que seguirá los puntos de referencia.
Vaya a Proyecto> Crear> C # Script ... llamemos a este WaypointFollow
y lo abrimos y agregaremos el siguiente código.
El código incluye muchas de las cosas que hemos hecho antes y que hicimos con nuestro
ejemplo de zombie de moverla, seguirla y hacer slerping.
Entonces verás la misma dinámica en un momento cuando lleguemos allí.
En primer lugar, sin embargo, necesitas una variedad de objetos de juego para contener todos esos puntos de
referencia y los completaremos automáticamente.
A continuación, un 'int', que es el waypoint actual.
Entonces es el índice en esta matriz de puntos de referencia para la esfera hacia la que nos dirigimos actualmente.
Después de eso, tienes los sospechosos habituales que hemos tenido antes con velocidad, precisión y
velocidad de rotación.
Ahora en la función Inicio, estamos configurando la matriz de waypoints para que sea igual a todos los objetos del
juego que tienen la etiqueta 'waypoint'.
Entonces, esto está llenando automáticamente esta matriz de puntos de referencia para usted.
Si desea especificar los puntos de ruta usted mismo, puede colocarlos manualmente en esta matriz de puntos de ruta
a través del Inspector y luego puede colocarlos en el orden en que los desea.
Pero por ahora, lo estamos haciendo automáticamente porque es mucho más rápido. En LateUpdate es donde va a
suceder todo el trabajo y se puede ver que es bastante corto.
En primer lugar, vamos a verificar si tenemos algún punto de referencia. Si no lo hacemos, entonces
volveremos porque no tiene sentido mudarse a ningún lado.
Luego tenemos nuestro lookAtGoal siendo construido nuevamente.
De nuevo, este es un tipo 2D de LookAt, siempre que esté a la misma altura que el tanque pero
en las x y z del punto de referencia. Si quisieras un sistema 3D de puntos de referencia,
donde tienes un avión o un pájaro o algo que se pueda mover en
tres dimensiones, entonces obviamente pondrías la posición y de los puntos intermedios aquí, en lugar de los
tanques y -posición.
Luego calculamos nuestra dirección como antes y luego
realizamos el slerp, que girará el tanque hacia el punto de referencia (o en esa dirección).
Correcto.
Luego, seguimos adelante y probamos nuestra magnitud para que sea 'menor que' la precisión, para decir si estamos lo suficientemente
cerca de ese punto de referencia en particular.
Si estamos lo suficientemente cerca del punto de referencia particular, entonces aumentamos nuestro punto de referencia al que nos
dirigimos en 1.
Entonces, digamos que nos dirigimos al punto de referencia 0
y luego lo hemos alcanzado con nuestra precisión, esto
irá al punto de referencia 1 y eso nos hará comenzar a mirar el punto de referencia 1 y movernos
al punto de referencia 1.
Todo bien.
Ahora, si hemos llegado al final de esa matriz, nos hemos quedado sin puntos de referencia. Luego volvemos al primer punto de
referencia.
Así que esto va a cambiar para nosotros. Después de todo lo que sucede, realizaremos nuestro Traductor.
Tenga en cuenta que el Traductor no está restringido de ninguna manera, solo sucederá independientemente de cualquier cosa, excepto
que no haya ningún punto de referencia. Entonces estamos girando, estamos mirando el punto de
referencia que deberíamos estar observando y luego estamos empujando el tanque hacia adelante porque toda esta actualización se trata de recorrer
los puntos de referencia, por lo que el tanque nunca se detendrá ante nada.
Guarde eso, luego regrese a Unity y lo que quiere hacer es seleccionar su tanque
y arrastrar y soltar Waypoint Siga al tanque.
Ahora en el Inspector, verá los puntos de referencia aquí.
Ahora, si desea colocar sus puntos de referencia, puede arrastrarlos y soltarlos, como dije antes, desde la Jerarquía
a esa matriz y luego colocarlos y cambiar el orden que desee, pero
lo estamos haciendo automáticamente , por lo que no es necesario en este caso.
Entonces, una vez que hayas hecho eso, presiona Reproducir y verás que el tanque comienza a seguir tus
puntos de referencia.
Ok, entonces está fuera de este ...
y luego girará e irá a este ...
Si esto es un poco lento
para usted, simplemente volveremos a los puntos de referencia y modificaremos la velocidad.
Pongamos esto hasta 3.
Ahora, si aumenta la velocidad, también necesita aumentar la velocidad de
rotación, de lo contrario, encontrará que tiene
un tanque que gira mucho en grandes arcos.
Entonces, veamos si esto ayuda.
No está mal.
Puede ver que se necesita un arco bastante grande para girar porque esa velocidad de rotación es un poco más lenta que
la velocidad de avance real, pero aún funciona.
Se acerca lo suficiente a los puntos.
Ahora recuerde, si obtiene un tanque que comienza a girar alrededor de un punto de referencia o comienza a temblar en un punto de
referencia, es porque la precisión es demasiado baja y deberá aumentar su precisión.
Veamos si podemos forzar al tanque a hacer eso.
Abra su script y la precisión (que actualmente es 1), hagámoslo 0. 5)
Guarde eso y vaya, regresemos y corramos esto
y veamos, si el tanque nunca alcanza el punto de referencia, simplemente comenzará a rodear el
punto de referencia porque cambia constantemente su vector de dirección para apuntar a la esfera, mientras también se empuja hacia
adelante .
Ahora simplemente no puede acercarse lo suficiente debido a la velocidad y la rotación para que esté dentro
de ese 0. 5 distancia de ese
punto de referencia y, por lo tanto, se quedará atascado.
Entonces, es la velocidad, la velocidad de rotación y la precisión que TODOS tienen un efecto sobre si el tanque
alcanzará ese punto de referencia en particular o no.
Por lo tanto, siempre considérelos y compruebe lo que está sucediendo en lo que respecta al comportamiento.