Jump to content
Sign in to follow this  
ecko

navmesh esquivar jugadores

Recommended Posts

Hola a tod@s, estoy usando navegación navmesh y la verdad me funciona todo bien salvo un detalle importante... resulta que si tengo varios jugadores navegando por el mapa y un jugadorA se interpone en el camino de otro jugadorB (JugadorB esta recorriendo una ruta) este comienza a empujar al jugadorA.

Necesito que no empuje sino que lo esquive, entonces me pregunto debo de alguna manera anular el empuje al rigiboddy (si es así como? ya que mass no puede ser 0 :S)? o debo agregar un navmeshobstacle? (si es así que propiedades debo poner ya que lo he probado y me vuelve loco los personajes moviendolos solos y de un punto a otro punto como teletransportandolos :S) las propiedades que he usado para esto son : carve=T, Move Threshold = 0.1, Time to Stactonary=0, CarveOnlyStation=false

Share this post


Link to post
Share on other sites

He estado intrigando mas del tema y según unity es incompatible usar navmeshagent junto con navmeshobstacle lo cual sólo debo usar navmesagent, a parte de esto he probado a quitar mi componente de colisión (charactercontroller) y el rigibody y el resultado es el mismo, mi jugador que esta recorriendo una ruta empuja al jugador que esta en medio de su ruta :S, no sé como hacer que no empuje si se supone que esto lo controla rigibody y lo tengo quitado.

Share this post


Link to post
Share on other sites

puedes lanzar un raycast (corto) hacia delante del personaje, y si detecta a otro personaje delante haces que lo esquibe... (igual tienes que "parar" el navMesh y luego continuar... no se muy bien como va el navMesh...)

...tambien igual lo puedes hacer con "triggers" aunque creo que es mejor con raycast... 

si todos los personajes tienen rigidBody puedes ponerle una masa mas alta a los personajes cuando esten quietos, y mas baja cuando se mueven... de esta manera los personajes con menos masa (los que se mueven) no empujaran a los que estan quietos... sino que el rigidBody le hara "rodear" el obtaculo(personaje quieto) "rozando" contra el...

Share this post


Link to post
Share on other sites

Si entiendes el siguiente tutorial, entenderás cómo aplicar los Obstacle a los personajes, para que se aparten cuando te cruces con ellos:

 

Share this post


Link to post
Share on other sites

Buenas, gracias por las respuestas de antemano, Pioj he visto el tutorial pero según entiendo eso sólo funciona para obstaculos (no tienen navmeshagent) y mi caso es cuando 2 jugadores se cruzan o cuando un jugador se mueve por una ruta donde hay un jugador parado.

Una forma que he visto por ahí sería en un triger de colisión desactivar el navmeshagent en uno de los dos jugadores y activar el navmeshobstacle y en el otro jugador mantener activado el navmeshagent y desactivado el navmeshobstacle y cuando salga de la colisión volver a activar el navmesh del otro jugador y desactivar el navmeshobstacle, pero creo que esto no es la mejor opción ya que tengo que controlar varios factores y me da que no va a funcionar muy bien...

Por lo que he leido y comprobado no puedo tener los dos componentes activados ya que se detecta a si mismo y no para de moverse el objeto jugador de un lado a otro.

Share this post


Link to post
Share on other sites

¿Y no puedes añadir un gameobject/esfera/cilindro/cosa vacía, con el Obstacle, y mediante script colocarlo siempre en la posición que tenga un navmeshagent?

Share this post


Link to post
Share on other sites

He visto tutoriales malos, pero este se lleva la palma!!!, menudo monton de mierdas para contarle a la gente que luego dira "mi juego no funciona muy bien", seguro que no lo hace si sigues estas indicaciones..... 

pioj tu antes molabas!! xD

  • Like 1

Share this post


Link to post
Share on other sites
4 minutes ago, Eskema said:

He visto tutoriales malos, pero este se lleva la palma!!!, menudo monton de mierdas para contarle a la gente que luego dira "mi juego no funciona muy bien", seguro que no lo hace si sigues estas indicaciones..... 

pioj tu antes molabas!! xD

¡Gran observación! 

Share this post


Link to post
Share on other sites

Se nota claramente que el tipo no entiende lo que esta haciendo, mezclando conceptos como poner el obstacle, o quitar el rigidbody a un collider que luego mueves, forzando al sistema de fisicas a recalcularse y a perder mucho rendimiento.

Gran tutorial sin duda alguna!!! xDDD

Share this post


Link to post
Share on other sites
3 minutes ago, Eskema said:

Se nota claramente que el tipo no entiende lo que esta haciendo, mezclando conceptos como poner el obstacle, o quitar el rigidbody a un collider que luego mueves, forzando al sistema de fisicas a recalcularse y a perder mucho rendimiento.

Gran tutorial sin duda alguna!!! xDDD

Pero, se fue por las ramas explicando algo que no tiene explicación.... LA DOCUMENTACIÓN de UNITY tiene todo explicado a lujo y detalle... no entiendo por que la gente busca en los lugares incorrectos.. 

Bueno.. Pero eso da más ventaja a los que estamos desarrollando... 

Share this post


Link to post
Share on other sites
2 minutes ago, francoe1 said:

Pero, se fue por las ramas explicando algo que no tiene explicación.... LA DOCUMENTACIÓN de UNITY tiene todo explicado a lujo y detalle... no entiendo por que la gente busca en los lugares incorrectos.. 

Bueno.. Pero eso da más ventaja a los que estamos desarrollando... 

Llevo varias semanas dandome con el tema de la IA + navegacion + local avoidance y he flipado en colores con el video. Y como dices, la documentacion aunque simplona (como siempre en unity) te da buenas pistas. Luego cuando lo dominas pasas del navmesh de unity y te pillas un plugin y vives mas feliz XD

Edited by Eskema

Share this post


Link to post
Share on other sites
1 minute ago, Eskema said:

Llevo varias semanas dandome con el tema de la IA + navegacion + local avoidance y he flipado en colores con el video. Y como dices, la documentacion aunque simplona (como siempre en unity) te da buenas pistas. Luego cuando lo dominas pasas del navmesh de unity y te pillas un plugin y vives mas feliz XD

Hace 4 días no duermo intentando sacar el demonio que tiene mi vehiculo con WheelColliders, estoy armando un sistema de físicas de vehículos haciendo uso de WheelCollider, y como todo lo que te da UNITY es de MALO para ABAJO, siempre me pregunte por que no mejoran o directamente lo sacan  - 

Hace varios años no toco NavMesh, pero me toco hacer un trabajo y la verdad es que es ¡HORRIBLE!  -
 

Se va un poco del TOPIC pero no gasten tiempo con NAVMESH utilicen A* o mejor aún si se trata de un juego simple puedes programar tu propio algoritmo basada en la teoría de grafos ... 

El punto que mas me molesto de NavMesh es la optimización, cuando tienes múltiples agentes, no se puede trabajar en hilos independientes, juegos como AoE hacían una cola para que el sistema resuelva una ruta a la vez, y esto era mas optimo, a esto se le aplicaba una resolución progresiva, es decir, resolvía de a diez pasos entonces al tenes muchas unidades no se veía afectado..

 

Share this post


Link to post
Share on other sites
1 minute ago, francoe1 said:

Hace 4 días no duermo intentando sacar el demonio que tiene mi vehiculo con WheelColliders, estoy armando un sistema de físicas de vehículos haciendo uso de WheelCollider, y como todo lo que te da UNITY es de MALO para ABAJO, siempre me pregunte por que no mejoran o directamente lo sacan  - 

Hace varios años no toco NavMesh, pero me toco hacer un trabajo y la verdad es que es ¡HORRIBLE!  -
 

Se va un poco del TOPIC pero no gasten tiempo con NAVMESH utilicen A* o mejor aún si se trata de un juego simple puedes programar tu propio algoritmo basada en la teoría de grafos ... 

El punto que mas me molesto de NavMesh es la optimización, cuando tienes múltiples agentes, no se puede trabajar en hilos independientes, juegos como AoE hacían una cola para que el sistema resuelva una ruta a la vez, y esto era mas optimo, a esto se le aplicaba una resolución progresiva, es decir, resolvía de a diez pasos entonces al tenes muchas unidades no se veía afectado..

 

Yo me he pasado al A* pathfinding de aaron granberg y es un buen plugin para el tema navegacion/pathfinding, luego sobre eso ya construyes tu IA y tirando millas.

Los wheelcolliders yo los descarte e hice directamente un script de "rueda" con el tipico raycast al suelo para checkear las normales y con eso ya darle friccion a la rueda, distancia de amortiguador, etc, etc, la verdad es que me costo 1 mes el maldito script, pero menudo mundo en cuanto a velocidad de uso y de consumo de recursos. Para mi que los wheelcollider son para tener varios PCs de la NASA trabajando con multiples CPUs en cluster porque chupan rendimiento como si te regalaran las CPUs xD

Share this post


Link to post
Share on other sites
4 minutes ago, Eskema said:

Yo me he pasado al A* pathfinding de aaron granberg y es un buen plugin para el tema navegacion/pathfinding, luego sobre eso ya construyes tu IA y tirando millas.

Los wheelcolliders yo los descarte e hice directamente un script de "rueda" con el tipico raycast al suelo para checkear las normales y con eso ya darle friccion a la rueda, distancia de amortiguador, etc, etc, la verdad es que me costo 1 mes el maldito script, pero menudo mundo en cuanto a velocidad de uso y de consumo de recursos. Para mi que los wheelcollider son para tener varios PCs de la NASA trabajando con multiples CPUs en cluster porque chupan rendimiento como si te regalaran las CPUs xD

Si, actualmente estoy trabajando en un sistema de WheelColliders propio, estoy un poco perdido con el deslizamiento horizontal, aun no estoy logrando algo decente, pero calculo que un tiempo voy a lograr algo mejor que Unity para el objetivo que quiero lograr. 

Si tienes por algo sobre el tema que explique pasame por MP :) jajaja, si no es molestia.

Share this post


Link to post
Share on other sites
15 minutes ago, francoe1 said:

Si, actualmente estoy trabajando en un sistema de WheelColliders propio, estoy un poco perdido con el deslizamiento horizontal, aun no estoy logrando algo decente, pero calculo que un tiempo voy a lograr algo mejor que Unity para el objetivo que quiero lograr. 

Si tienes por algo sobre el tema que explique pasame por MP :) jajaja, si no es molestia.

Dale un vistazo al MP a ver

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...