Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Mantis

Pathfinder muy sencillo en Javascript

Recommended Posts

ah, muy bien. Así mejor si. Yo sigo con mi locura de hacerlo en C# pero me estoy desmotivando. Creo que terminaré volviendo al Js y cogiendo tu Flood. :P Que ya tengo ganas de ver cómo va.

Share this post


Link to post
Share on other sites

Buenas! Al final me ha funcionado el WaveFront en C# que tanto me estaba costando. El problema no se si era el mismo que tenías tu. Los valores se pisaban por que no reinicializaba a cero la matriz con cada nuevo click de destino. [attachment=747]pathFinderWaveFront.rar[/attachment]

Share this post


Link to post
Share on other sites

Enhorabuena..por hacerlo funcionar. La verdad es que no es fácil. A mi también me costó Mi problema era que la funcion Flood() se quedaba ejecutandose un millon de veces pisando unos valores con otros. pero ya lo arreglé. En cuanto pueda lo pruebo

Share this post


Link to post
Share on other sites

Lo más difícil ya estaba hecho. Gracias a ti por el inicio de este hilo, que fue lo que me motivó a la hora de ponerme a estudiar a fondo estos algoritmos. Ahora estoy pensando algún sistema para contemplar cambios de altura de las casillas, y rampas, etc. Había pensado definir una matriz de estructuras o clases que además de tener un "valor de coste", tuvieran un valor de altura. Y así a la hora de mirar las casillas adyacentes, se tuviera en cuenta la altura y se otorgase un valor u otro dependiendo de si es una rampa, o bien se le asignase un valor muy elevado de forma que esa casilla obtuviera un nuevo valor desde otro camino (no parace fácil), en caso de tratarse de otra altura inalcanzable desde donde se está comprobando. De momento he cambiado que a las adyacentes en diagonal, se les asigne un valor de raiz de 2. Para eso he redefinido el valor de las matrices como float en vez de int. Un saludo

Share this post


Link to post
Share on other sites

Al decir que has asignado el valor de raíz de 2 te refieres a que lo has dejado así, con todos los decimales? Ya que para hacer calculos, es preferible que sean enteros, para operar mas rápidamente. Yo suele usar los valores 10 y 14.

Share this post


Link to post
Share on other sites
Guest

¿Raiz de 2?, pero por dios ¿porqué os complicais tanto la vida? Leeros el post que puse sobre el pathfinder donde se explica paso a paso como es el brushfire, es mucho más simple de lo que lo estais haciendo vosotros

Share this post


Link to post
Share on other sites
¿Raiz de 2?, pero por dios ¿porqué os complicais tanto la vida? Leeros el post que puse sobre el pathfinder donde se explica paso a paso como es el brushfire, es mucho más simple de lo que lo estais haciendo vosotros
Que tal Hosuko. El Brushfire lo tenemos ya dominado jeje :cheer: . Y funciona perfectamente. Lo que esta haciendo aFisicos es perfeccionar su pathfinder para orientarlo a un juego determinado.Para tener en cuenta el relieve del terreno y demás. Saludos

Share this post


Link to post
Share on other sites
Lo más difícil ya estaba hecho. Gracias a ti por el inicio de este hilo, que fue lo que me motivó a la hora de ponerme a estudiar a fondo estos algoritmos. Ahora estoy pensando algún sistema para contemplar cambios de altura de las casillas, y rampas, etc. Había pensado definir una matriz de estructuras o clases que además de tener un "valor de coste", tuvieran un valor de altura. Y así a la hora de mirar las casillas adyacentes, se tuviera en cuenta la altura y se otorgase un valor u otro dependiendo de si es una rampa, o bien se le asignase un valor muy elevado de forma que esa casilla obtuviera un nuevo valor desde otro camino (no parace fácil), en caso de tratarse de otra altura inalcanzable desde donde se está comprobando. De momento he cambiado que a las adyacentes en diagonal, se les asigne un valor de raiz de 2. Para eso he redefinido el valor de las matrices como float en vez de int. Un saludo
Que tal. Animo en tu proyecto, veo que quieres adaptar el pathfinder para el juego de estrategia que estas haciendo. Yo estoy puliendo un jueguecito que he hecho estilo Pac Man para Android pero con diferencias sustanciales. En la IA de algunos enemigos estoy usando la primera version de pathfinder que posteé y el brushifire para otros. Tengo muchos proyectos iniciados pero este es el primero que he terminado.

Share this post


Link to post
Share on other sites

Buenas. Mantis, Habrá que ver ese juego en cuanto se pueda. Haces bien en no complicarte demasiado. Yo siempre tengo el mismo problema, empiezo muchos proyectos... (escritorio lleno de carpetas con proyectos Unity), y luego no acabo ninguno... Excepto el Gotardo que ya lo subí al market pero que al final me pareció muy complicado de jugar, y tras 3 o 4 actualizaciones decidí darle un descanso. Hosuko. Como dice Mantis, ya está dominado el BrushFire. Lo tenemos en Js y en C#. Y sí, se me fue la olla con el raiz de 2 jaja. Está claro que mejor usar enteros para el tema de costes diferentes en las diferentes direcciones. Ahora estoy apunto de pillar vacaciones 2 semanas... A ver si por fín puedo dedicar un buen rato a todo esto y hacer algo de provecho como tu Mantis. Que tengo ganas de completar algún jueguecillo más. Un saludo.

Share this post


Link to post
Share on other sites
Guest Hukha

Hola, he visto este tema y alomejor alguno entiende mi tema y puede contestarme, aquí esta el link:

 

 

Muchas gracias.

Share this post


Link to post
Share on other sites

Hola a todos He estado trabajando con el tema de Pathfinder para mi proyecto y quería compartir lo que he conseguido hasta ahora. No es el A* pathfinder, pero es muchísimo más sencillo. Esta basado en el algoritmo que posteó un usuario del foro, el código del algoritmo estaba escrito en C++ Código en C++y lo traduje a javascript.

 

El algoritmo esta basado en una Matriz como el A* pathfinder He estado observando la idea de escanear el terreno y dividirlo en cuadriculas de un compañero del foro que está realizando el A* Pathfinder. En mi proyecto también escaneo el terreno pero de manera diferente. Lo que se me ocurrió fue crearme una Matriz de Objetos (Planos en este caso). El nombre de cada cuadrícula (Objeto) de la matriz me indica las coordenadas que ocupa en dicha matriz. Así el punto (0,0) tendrá de nombre "0000", el punto (0,1) será el "0001". Los dos primeros caracteres me indican la coordenada x y los siguientes la coordenada y. Recupero ese nombre lo paso a Entero y lo uso para trabajar con la Matriz lógica . Mejor veis el código y lo probais: El algoritmo funciona perfectamente en escenarios como el que hay en el proyecto. Con los laterales libre de obstáculos. El problema es que en escenarios con laterales cerrados el Player puede fallar al encontrar el camino. Esto es algo que hay que mejorar. 

 

 

PATHFINDER.zip

El enlace está caído, si alguien hace el favor de resubirlo sería de gran ayuda. :)

Share this post


Link to post
Share on other sites

×
×
  • Create New...