atom182 2 Report post Posted July 16, 2018 (edited) Hola. Estoy haciendo un simulador de automóvil en primera persona. Y necesito que el usuario vea a donde tiene que ir, por lo cual se me ocurrió mostrar algo parecido a Waze o a GoogleMaps y mostrar pintado en el suelo una linea por donde debe dirigirse. Ya creé una guía en la cual pongo en las esquinas e intersecciones nodos y con base con ellos (guardando todo en una lista de visitas), guiar al usuario. El problema llega cuando me dijeron que la posición del usuario y del objetivo serán aleatorios. entonces necesito encontrar el camino mas corto. Así que mi pregunta es ¿Cómo puedo hacer eso? Estaba pensando en usar el MeshAgent pero no se si pueda renderizar de una LineRenderer de su camino. ¿O tengo que hacer el algoritmo de Dijkstra o el A* por mi cuenta? O tal vez tengan una mejor idea de cómo hacer esto... Saludos compañeros y gracias por su ayuda. Aqui dejo un ejemplo de como se ve en este momento Edited July 17, 2018 by pioj Escribir correctamente ayuda a que toda la gente entienda tu mensaje... Share this post Link to post Share on other sites
lightbug 725 Report post Posted July 16, 2018 6 hours ago, atom182 said: asi q mi pregunta es. como puedo hacer eso? estaba pensando en usar el meshagent pero no se si pueda renderisar una linerenderer de su camino. Hola, creo que con esto podés : https://docs.unity3d.com/ScriptReference/AI.NavMeshAgent-path.html dice: "This property can be useful for GUI, debugging and other purposes to get the points of the path calculated by the navigation system " y pasarlo a un LineRenderer quizás. Saludos Share this post Link to post Share on other sites
Igor 217 Report post Posted July 16, 2018 lo puedes hacer de muchas manerar... con el navmesh... con un pathfinding tipo A* por "casilla"... puedes hacerlo con "nodos"... con el truco de los padres/hijos.... tendria que tener cada nodo un pequeño script que te diga cuales son sus "vecinos" (tendrias que asignarlos a mano en el editor en un pequeño array) luego cuando necesites hacer una ruta, primero buscas el nodo mas cercano a ti, y el mas cercano a tu destino, luego le dices a ese nodo, el "origen" que te diga sus vecinos... y a esos vecinos los haces hijos del "origen" y les preguntas sus vecinos... a esos vecinos de cada uno, los haces hijos de cada uno... y les vuelves a preguntar... y asi hasta llegar al nodo de "destino"... y entonces cojes los padres que han llegado a ese destino... el padre del destino seria el "wayPoint" anterio al destino, ...el padre de ese seria el anterior... y asi hasta el "origen"... y ya tendrias el camino es un truco chapuzero pero funciona... me estaba volviendo loco haciendo mi propio pathFinding por nodos y al final lo hice asi... luego no te olvides de desemparentar todo los nodos ...para cuando tengas que hacer otra "busqueda" de camino... con la tecnica tipo "por casillas" tienes que tener un array[x,y] de int... y la tecnica es parecida... las casillas "no walkable" (los muros) los "setupeas" en -1... "los walkable" en 0... en el origen pones 1, buscas las casillas de alrededor que sean walkables (0) y pones un 2, buscas las siguentes y pones un 3... y asi hasta llegar al destino... si el destino es porejemplo 12... tienes que buscar un 11 al lado del 12, luego un 10 al lado de esd 11, luego un 9 al lado de ese 10.... y asi hasta llegar al 1(origen) y ese sera el camino... como ves la tecnica es parecida a la anterior... tendrias que montarte un sistema para "setupear" cuales casillas son walkables y cuales no... esto se puede hacer de varias maneras... Share this post Link to post Share on other sites
atom182 2 Report post Posted July 19, 2018 wow, muchas gracias por su ayuda. creo de debo aprender mucho sobre esto. muchas gracias por su ayuda. saludos Share this post Link to post Share on other sites