Localice el camino más corto a través de obstáculos cuando todos los caminos normales están bloqueados

10

Estoy haciendo un Tower Defense y tengo un trabajo básico de búsqueda de caminos, pero tengo un problema.

Quiero hacer que el camino sea bloqueable, y cuando ocurre un bloqueo, los corredores atacarán las torres de bloqueo.

Entonces, lo que necesito es una forma de encontrar el camino más corto que, lo que es más importante, tenga el menor número de torres en el camino.

¿Cómo puedo hacer eso?

Dani
fuente
1
¿No sería una detección de colisión dentro de su camino transitable?
Premio
Dado que las torres de bloqueo son destructibles, en realidad hay un camino. Solo el costo de moverse a través de ellos es mucho más alto que moverse por un camino sin obstáculos. (Ver la respuesta del coderanger a continuación)
bummzack

Respuestas:

21

En su puntuación de ruta, hágalo así, pasar por una torre cuesta lo mismo que atravesar una gran cantidad de fichas. En general, tratará de sortearlos, pero si no existe ese camino, la salida seguirá atravesando el menor número de obstáculos. Puede ajustar la penalización para que, a veces, simplemente pasen en lugar de dar la vuelta al mapa si así lo desea.

coderanger
fuente
me encantaría ver un código de ejemplo de esta implementación, suena simple y robusto
DFectuoso
3
El algoritmo A * ( en.wikipedia.org/wiki/A * _search_algorithm) funciona con costos de ruta. Simplemente aumente el costo de los segmentos que atraviesan una torre. Sus agentes intentarán evitar las torres, o si es "más barato" atacar una torre, la atacarán. La idea del algoritmo A * es minimizar el costo, por lo que debería poder lograr lo que desea simplemente ajustando los costos de la ruta ...
bummzack
Esta es una gran solución que no habría pensado, ¡gracias!
jhocking
Solo una nota: otorgar a los nodos de la torre un gran costo de movimiento sin aumentar también la estimación utilizada para el algoritmo A * cuando la ruta está obviamente bloqueada significará que sus agentes verificarán cada nodo en su parte del obstáculo antes de decidirse por una ruptura. a través del punto Dependiendo de la cantidad de nodos y agentes, esto podría hacer que el algoritmo sea extremadamente lento.
Martin Sojka