Jump to content
UnitySpain
atom182

crear una guía para automóvil

Recommended Posts

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

Captura.PNG

Edited by pioj
Escribir correctamente ayuda a que toda la gente entienda tu mensaje...

Share this post


Link to post
Share on other sites
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

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:91_thumbsup:

 

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

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

×
×
  • Create New...