En la conferencia anterior, programamos en nuestro nodo hoja y también hicimos nuestro comportamiento de ladrón para que nuestro
agente se mueva hacia el diamante.
Ahora, lo que hemos hecho es poner algo que funciona y no vamos a mantenerlo
ahí.
La razón es que, si volvemos al código aquí, actualmente lo que estamos haciendo es
que estamos ejecutando este proceso de árbol que luego va y ejecuta el acero, que luego baja a su hijo y ejecuta ir a Diamante.
Ahora esto devuelve inmediatamente el éxito aquí.
Bien, ahora no puede devolver el éxito hasta que el agente esté realmente en el diamante.
Así que cualquier cosa puede pasar en el camino hacia el destino.
Además, como estamos usando medidas NAV, muchos de los métodos que pongas aquí se verán
como mover a Diamond, mover a Van, mover a aquí, mover a allí.
Y por lo tanto, necesitamos tener un método que sólo se ocupa de nuestro movimiento en la malla de navegación.
Así que en realidad va a crear que primero antes de continuar con nuestro árbol de comportamiento.
De lo contrario, vamos a terminar en un pequeño lío.
De acuerdo.
Así que lo que haremos inicialmente es determinar si el agente se está moviendo o está inactivo.
Así que si se está moviendo, entonces es obvio que está haciendo un comportamiento particular, en cuyo caso usted no quiere ir y establecer
el destino para otro lugar mientras está en medio de mover al diamante, por ejemplo, porque él sólo
va a parar eso y luego se mueve en otro lugar.
Así que en la parte superior aquí, lo que voy a hacer es añadir en otro pequeño enum para realizar un seguimiento
de lo que nuestro agente está haciendo, por lo que el público en el estado de la acción o llamarlo, y vamos a ser ya sea inactivo o de trabajo.
Así que es muy sencillo.
Sólo hay dos estados en los que el agente estará y entonces crearemos una variable para mantener eso.
Así que el estado de la acción, el estado es igual a la acción del estado de inactividad.
Así que empezaremos como si estuviéramos inactivos en este momento.
Podemos utilizarlo fijándolo entre la inactividad y el trabajo para que se active cuando vaya a ocurrir
algo.
Así que vamos a bajar a la parte inferior aquí debajo de nuestros go tos y poner en nuestro nuevo método para atravesar la
malla de navegación.
Así que esto sería el estado de punto de nodo, ir a la ubicación y que luego tendrá un vector tres para el destino.
Así que ahí es donde vamos a ir y a pasar eso.
Ahora, bueno, en primer lugar, calcula lo lejos que estamos de nuestro destino.
Así que la distancia flotante al objetivo es igual al vector tres.
Y esa es la diferencia entre el destino y la posición actual de nuestro agente.
Así que esta posición de transformación de puntos ahora hay una gran cantidad de codificación manual aquí para trabajar con la malla de navegación
real.
La malla de navegación tiene un montón de operaciones que vienen con ella que te dirán la distancia
que hay hasta el destino y si está en marcha y si hay un camino y todo eso.
Pero tiene fama de tener muchos problemas.
Así que haciendo todas estas cosas manualmente con nuestro propio código, podemos estar absolutamente seguros de los valores que estamos obteniendo.
Así que esto de aquí debería ser en realidad un vector de tres puntos de distancia.
Y una vez hecho esto, vamos a decir si el estado es igual a la acción, punto, estado, punto inactivo.
A continuación, iremos agente conjunto destino a nuestro destino.
Y esto también significará que sólo se ejecutará una vez cuando esté inactivo.
Si usted está trabajando y esto viene aquí de nuevo, no va a mantener constantemente el
mismo destino una y otra vez, que va a ahorrar un poco de tiempo de procesamiento para usted.
Así que pasemos a que el estado sea igual a la acción.
Punto de estado trabajando.
Bien, ahora si no estamos ociosos, significa que debemos estar en camino a un destino.
Así que si el vector de tres puntos de distancia.
Y esta vez buscaremos que la distancia entre la trayectoria y la posición del punto del agente y el destino
sea mayor o igual que, digamos, dos.
Entonces no hemos llegado al destino y por lo tanto el agente ha fallado.
Así que volveremos a poner el estado en reposo.
El estado es igual a la acción, el estado es inactivo.
Y ahora devolveremos el estado del nodo de fallo.
Bien, recuerda que hagamos lo que hagamos, siempre tenemos que volver a correr con el fracaso o el éxito.
Así que en este caso vamos a devolver el fracaso.
Y luego aquí abajo vamos a ir a otra cosa si dist a objetivo a objetivo como
creamos antes es menor que dos, entonces tenemos éxito y aquí ponemos estado igual de nuevo estado de acción ociosa y devolvemos
no punto estado punto éxito.
Y luego la primera vez que se ejecuta a través de este y establecer el estado de trabajo y este destino
aquí, vamos a continuación, devolver ningún punto de estado en ejecución.
Ahora bien, este estado de ejecución aquí va a impedir que volvamos a entrar aquí y comprobar esto inmediatamente
de nuevo.
De todos modos, en un momento nos pondremos a utilizarlo.
Así que guarda eso.
Ahora podemos utilizar la ubicación de ir a, si subimos a nuestro ir a Diamante e ir a Van.
Así que aquí hay un pequeño desafío para ti, es reescribir estos dos métodos para que no usen eso, sino que realmente usen este
nuevo método de ir a la ubicación que acabamos de crear.
Así que pon en pausa el vídeo, vete y hazlo.
Y cuando volvamos, te mostraré cómo hacerlo.
De acuerdo.
Bienvenido de nuevo.
¿Cómo te fue?
Bueno, básicamente nos estamos deshaciendo de nuestro destino aquí arriba.
Y todo lo que tenemos que hacer es volver, ir a la ubicación y, por supuesto, escribirlo correctamente.
Y aquí, vamos a enviar a través de nuestro punto de diamante transformado posición.
Y eso es todo más o menos.
Y luego queremos que de nuevo abajo en la furgoneta y aquí, sólo vamos a tener van no transforman posición.
Así que cualquiera de estas cosas que usted crea ir a Diamante e ir a la ventilación ahora
van a utilizar este ir a la ubicación, lo que significa que usted puede controlar todo en cuanto a la malla de navegación movimiento
de aquí va a hacer la vida mucho más fácil.
Bien, hemos hecho un poco de limpieza con nuestro código de movimiento de la malla de navegación, que podremos
utilizar una y otra vez.
Actualmente, lo que tienes no va a funcionar como esperas, así que ni siquiera lo intentes.
En el próximo vídeo volveremos a enlazarlo.
Vaya a Diamond y vaya a Van correctamente creando un nodo de secuencia.