De acuerdo.
Volvamos a este algoritmo de Astra y acabemos con él.
Así que seguimos en la búsqueda inicial y hemos creado nuestras ubicaciones de inicio y final.
Así que aquí abajo, lo que vamos a hacer es limpiar nuestras listas de apertura y cierre.
Así que abierto, punto claro y cerrado, no está claro dónde van a añadir la posición inicial a la lista de abiertos.
Así que abre el nodo de inicio de la adición.
Y finalmente, si recuerdas, creamos esa última pausa, vamos a establecer que sea igual al nodo
de inicio en este punto.
De acuerdo.
Así que estamos listos para empezar a buscar aquí abajo.
Vamos a crear otro método de búsqueda.
Y aquí es realmente donde verás todo lo que hemos estado hablando hasta ahora.
Así que anula la búsqueda y pasaremos por el marcador de ruta de este nodo.
De acuerdo.
Lo primero que vamos a hacer es comprobar si hemos alcanzado el objetivo.
Así que esta es la especie de condición final para todo.
Así que si este nodo dot equals por lo que hay uno sobre equals que entra en juego nodo de la meta, entonces vamos
a establecer dun equals true y sólo volver.
De acuerdo.
Y básicamente se ha encontrado el objetivo.
Sí.
A continuación, vamos a hacer un bucle y encontrar todos los vecinos.
De acuerdo.
Ahora, esto es muy similar a lo que estábamos haciendo en todos nuestros algoritmos de laberinto.
De acuerdo.
¿Cómo conseguimos al vecino de la posición actual?
Bueno, volvamos a entrar en Maze.
Ya tenemos esa construcción definida para nosotros aquí mismo.
Bien, esto es conseguir nuestros vecinos para el mapa.
También podemos utilizarlo para nuestra estrella porque sólo queremos la horizontal y la vertical.
Sin embargo, si quieres poder buscar en las diagonales, no hay ninguna razón por la que no puedas poner las coordenadas
diagonales aquí.
Y el algoritmo ASR que vamos a escribir funcionará exactamente igual.
Bien, empecemos por recorrer las direcciones del mapa.
Así que para cada ubicación en el mapa, querida en las direcciones de puntos del laberinto, permítanme desplazar esto para usted.
Vamos a encontrar al vecino.
Así que la ubicación del mapa vecino va a ser igual a la dirección.
Además de esta ubicación de punto de nodo.
Ahora mismo, antes de que podamos procesar a este vecino en particular, tiene que cumplir algunas condiciones.
La primera es que no debería ser un muro.
Si se trata de un muro, no lo procesaremos y nos iremos al siguiente vecino.
Así que como reto, lo que me gustaría que hicieras es escribir esta sentencia if para comprobar si
el vecino es una pared y si es una pared, entonces continuar.
Así que pon en pausa el vídeo.
Ahora, cuando volvamos, lo escribiré para ti.
De acuerdo.
¿Cómo te fue?
Bueno, es bastante sencillo.
Si el mapa de puntos de maíz en el punto vecino x y el punto vecino z es igual a uno, es una pared y continuaremos.
Así que continúa sólo nos va a permitir ir a la siguiente dirección del mapa que nos llevará al siguiente vecino.
Ahora la siguiente declaración if que vamos a tener que considerar es si el vecino está fuera del ámbito de nuestro
laberinto.
De acuerdo.
Así que otro reto para ti, ¿verdad?
Esta declaración if para comprobar si ese vecino está fuera de donde usted quiere que sea, entonces también continuar la pausa
de vídeo.
Ahora escribe eso cuando vuelvas, yo continuaré.
De acuerdo.
¿Cómo te fue con esa línea?
Bueno, es si el punto vecino X es menor que uno o el punto vecino X es mayor o igual que el ancho del punto de
mayo o el punto vecino z es menor que uno o el punto vecino z es mayor o igual que la profundidad del punto de mayo.
Y si ese es el caso, entonces vamos a continuar.
Ahora, una última condición.
Si el vecino ya está en la lista cerrada, también vamos a continuar porque no queremos procesarlo, pero todavía
no hemos puesto nada en ninguna lista cerrada, aunque sí tenemos una lista cerrada.
Así que vamos a crear nuestro propio método que compruebe si un vecino está en esa lista.
Así que justo debajo de la búsqueda, lo pondré aquí abajo.
Así que vamos a poner una bola se cierra y luego vamos a pasar a través de hecho el marcador de ubicación del mapa y luego.
Para cada uno.
Camino.
Marcador p en.
Vamos a probar si la ubicación del punto p es igual al marcador.
Entonces vamos a volver.
Es cierto.
Si no, vamos a volver.
Falso.
De acuerdo.
Ahora, parece un poco largo la forma en que estamos pasando a través de un marcador y luego estamos realmente
bucle a través de un bucle cerrado que tiene marcadores de ruta en ella, y luego realmente la prueba contra un marcador
y la ubicación de una ruta, porque esta es la forma en que tenemos que hacer en este punto.
Aquí arriba, el vecino es sólo una ubicación en el mapa.
Es sólo una posición en el mapa.
No le hemos dado un marcador de ruta.
Así que no tiene como una instanciación de uno de esos objetos de juego de ruta que hemos pasado por encima
todavía.
Por eso tenemos estas pruebas en una ubicación del mapa contra si hay un marcador de ruta con esa
ubicación.
De acuerdo.
Así que aquí abajo podemos poner otra declaración if en si es vecino cerrado, entonces vamos a continuar.
A continuación, vamos a calcular nuestra G, nuestra H y nuestro valor F.
Así que float g es igual a que va a ser el vector dos punto distancia de este nodo punto ubicación,
punto a vector y vecino, punto a vector, punto a vector.
Así que eso es encontrar a tu Pitágoras.
Ahora hemos encontrado la distancia entre el nodo actual K y su vecino.
Así que este nodo de aquí es básicamente el que va a estar al lado del vecino.
Pero hay que encontrar la distancia que se ha recorrido en todo el camino hasta ese nodo y luego más allá.
Así que tienes que hacer eso y luego también añadir en este nodo y su valor g que va a permitir que se mueva uno de su nodo actual,
además de sumar toda la distancia de la ruta que se ha acumulado a lo largo del viaje.
¿Verdad?
Y luego vamos a flotar.
H Ahora esta es la distancia entre donde está ese vecino y la meta final.
Así que de nuevo, vamos a utilizar un vector a la distancia y estamos encontrando
la distancia esta vez entre el punto vecino al vector a.
Y el nodo de la meta.
Nodo de la meta.
Ubicación del vector.
Volver a vector, no vector también.
Y eso es todo lo que tienes que hacer para tu valor h y luego flotar.
F Ahora deberías saber lo que es esto porque es probablemente el cálculo más
fácil de toda la estrella a y es g más h.
Así que, básicamente, se trata de un resumen de las distancias de nuestro camino o de los costes que supone recorrerlo.
Bien, ahora tenemos eso hecho.
Lo que podemos hacer es crear un objeto de juego para poner en nuestro camino para este lugar en particular.
Así que este vecino va a conseguir un bloque abierto básicamente.
Así que el objeto de juego, el bloque de ruta es igual a instanciar y queremos que la ruta P que pasamos
antes y el nuevo vector tres.
Esta es la posición en el mundo del juego real donde vamos a poner que por lo
que será nuestro punto x vecino y no se olvide de multiplicar por nuestra escala de puntos de mapa de vuelta aquí que está en la escala de
puntos de laberinto y luego a cero en la Y y luego punto z vecino multiplicado por la escala de puntos de laberinto.
Y luego queremos poner el punto de identidad catalana al final de eso.
Ahora el bloque de ruta en sí o debería decir la ruta de este objeto de juego, si usted tiene una mirada en él, vamos a volver
a la unidad de este prefab para el camino.
Si abres eso como un prefabricado y le echas un vistazo, verás que hay una G y H y una malla de
texto F adjunta.
Y así es como estoy mostrando los valores de G, H y F.
Por supuesto, cuando usted está usando esto en la producción para hacer una estrella, usted no tiene que preocuparse por todos
los pequeños tipos de interfaz y las cosas de lujo, pero quiero que usted sea capaz de ver como usted paso a través.
¿De acuerdo?
Así que eso significa que nuestro código necesita establecer esos valores y volveremos en el próximo video y continuaremos trabajando
en este código.