Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Simple y sencillo Pathfinding :/

Iniciado por lcnvdl, Mayo 13, 2015, 05:58:37 AM

Tema anterior - Siguiente tema
Gente, buenas!
 
Les escribo porque la verdad no encuentro una solución. Descargué e intenté usar varias soluciones de Pathfinding para mi juego, pero ninguna me funciona bien y no entiendo  por qué. Necesito un simple mecanismo de Pathfinding A*, para Grids, ni siquiera en 3D. Puede ser en 2D.
 
Alguien conoce alguna solución o alguna librería que le haya dado resultados?
 
Muchas gracias,
 
Saludos!


Porque le Navmesh no me permite desactivar ciertas zonas de forma dinámica o ignorar objetos específicos, está muy bueno pero para mi juego no me sirve. Además, al usar navmesh gira muy lento no me gusta el movimiento que tiene.

Mayo 13, 2015, 11:27:38 AM #3 Ultima modificación: Mayo 13, 2015, 02:56:33 PM por mrpacogp
Gira muy lento? No se que sistema usas, pero yo con Draugar hacia girar a los enemigos a la velocidad que yo quería.

Has probado con RAIN hay versión gratis en el asset store https://www.assetstore.unity3d.com/en/#!/content/23569" rel="external nofollow">https://www.assetstore.unity3d.com/en/#!/content/23569.
 
Lo del giro.. la velocidad de giro y otros parametros se ajustan en el NavMeshAgent, y da bastante juego la verdad.
 
Saludos!


Muchas gracias a todos por las respuestas!
 
Al final terminé implementando MeshAgent, anda bastante bien. Ahora tengo un problema, esquiva bien un obstáculo pero si le coloco 3 obstáculos juntos el player se enloquece, se los choca y queda trabado en vez de esquivarlos. 
 
Les muestro un video. http://unity.lucianorasente.com/tmp/moba/moba-problem.html" rel="external nofollow">http://unity.lucianorasente.com/tmp/moba/moba-problem.html
 
Qué puede ser?
 
Para el player uso MeshAgent, y para los obstáculos Mesh Obstacle.
 
Posible solución (pero no me termina de cerrar)
Colocar torres como Static (voy a seguir teniendo problemas igual con otros Obstacles.
1. Si coloco las torres como "Static" o "Baked", al rom*** me van a seguir impidiendo pasar por la zona en la que están, aunque de esta forma sí las esquiva.
2. Si coloco las torres como "Static" o "Baked", al dirigirme a una de ellas en vez de ir derecho, es como que va por un camino raro para esquivarla entonces no va a atacarla como debería.

Mayo 16, 2015, 03:03:35 PM #7 Ultima modificación: Mayo 16, 2015, 03:09:22 PM por oph1d1us
Hola otra vez, ¿que unity usas?, si usas unity 5, (no se si las versiones pro anteriores lo tenian) Hay un componente como el NavMeshAgent, que es navMeshObstacle, basicamente consiste en lo siguiente, bakeas tu maya de navegación, con los objetos que no se van a mover ni ser destruidos como "static ", despues creas el prefab de la torreta con el NavMeshObstacle, y si todo sale bien tu personaje esquivara la torre de forma dinamica, es decir aunque se mueva, yo lo he usado muy poco, y mas a nivel de prueba que para implementarlo realmente, pero lo poco que vi me párecio simple y efectivo.
 
PD: En NavMeshAgent, también tienes el radio de tu personaje, que determina por donde puede pasar y por donde no, dependiendo solo de ese radio, que se visualiza como un cilindro verde como si fuese un collider, si no se ajusta al tamaño del personaje, este no pasa por un hueco aunque fisicamente tu personaje si pasaría, también tienes un apartado para el margen de tolerancia en la evasión de obstaculos, pero esto lo he tocado poco. Espero que te sea útil.
 
Te adjunto enlace del manual de unity sobre meshObstacle. http://docs.unity3d.com/Manual/class-NavMeshObstacle.html" rel="external nofollow">http://docs.unity3d.com/Manual/class-NavMeshObstacle.html
 
 
 
Edito, no me di cuenta que ya usas meshObstacle, por tanto lo único que debes hacer es colocar tu torre como un prefab, después de bakear la malla de navegación. No necesitas declararlo static ni nada creo. 
 
Saludos!

Mayo 20, 2015, 06:36:10 AM #8 Ultima modificación: Mayo 20, 2015, 06:37:46 AM por lcnvdl
Cita de: oph1d1us date=1431781415Hola otra vez, ¿que unity usas?, si usas unity 5, (no se si las versiones pro anteriores lo tenian) Hay un componente como el NavMeshAgent, que es navMeshObstacle, basicamente consiste en lo siguiente, bakeas tu maya de navegación, con los objetos que no se van a mover ni ser destruidos como "static ", despues creas el prefab de la torreta con el NavMeshObstacle, y si todo sale bien tu personaje esquivara la torre de forma dinamica, es decir aunque se mueva, yo lo he usado muy poco, y mas a nivel de prueba que para implementarlo realmente, pero lo poco que vi me párecio simple y efectivo.
 
PD: En NavMeshAgent, también tienes el radio de tu personaje, que determina por donde puede pasar y por donde no, dependiendo solo de ese radio, que se visualiza como un cilindro verde como si fuese un collider, si no se ajusta al tamaño del personaje, este no pasa por un hueco aunque fisicamente tu personaje si pasaría, también tienes un apartado para el margen de tolerancia en la evasión de obstaculos, pero esto lo he tocado poco. Espero que te sea útil.
 
Te adjunto enlace del manual de unity sobre meshObstacle. http://docs.unity3d.com/Manual/class-NavMeshObstacle.html" rel="external nofollow">http://docs.unity3d.com/Manual/class-NavMeshObstacle.html
 
 
 
Edito, no me di cuenta que ya usas meshObstacle, por tanto lo único que debes hacer es colocar tu torre como un prefab, después de bakear la malla de navegación. No necesitas declararlo static ni nada creo. 
 
Saludos!
 
No hay caso, les asigno como obstacle a las torres pero aún así no las esquiva. Te doy un ejemplo: hago una fila de 3 torras pegadas, quiero cruzar al de adelante de las torres hacia atrás. En vez de esquivarlas e ir atrás, intenta "atravezarlas" quedándose trabado.
 
No se que hacer.
 
Mirá el video que subí, exactamente eso me pasa. Alguna idea de por qué?
 
Saludos

EUREKA!! activé "Carving" en el obstáculo de Navmesh y mágicamente funciona!
 
Gracias a todos por sus respuestas.

No hay de que para eso estamos!
 
Saludos.

Etiquetas: