Hi, I would like to please add a possible solution to this as I have struggled immensely with this.
I hope this can help.
After reading more than a dozen articles I think I figured something out (somewhat to where it looks normal movement of people/nav mesh ai’s etc. etc.).
My solution is not perfect as there is a little bit of “shaky” “pushy” type of movements on the AI side; however, it is far less and more realistic movement than its current way of doing things.
I had a problem with 200+ AI Nav Mesh Agents do the “Jiggling”/ “Shaking” effects when they would all target one object. (in my test experiment scene). As they were all trying to force there way to that target.
Things I tried
Setting Avoidance Priority; however, I soon found out that the priority level only goes to 99. so having double the AI, that couldn’t help.
I Tried setting the Nav Mesh Obstacle, and that made the shaking/jiggling/pushing of AI even worse.
What I found that is working for me as a work around using C#
I made sure rigidbodies was on all my AI characters. (In my test I set continuous dynamic for collider detection)
I made sure Sphere Colliders was on all my AI characters, and set trigger on.
In my script I simply did this method (I apologize for my wording, and comments)
// detect other gameObject tags that are not player, stop pushing other AI's away
void OnTriggerEnter(Collider other)
{
if (other.tag != "Player") //tag not like player
{
this.GetComponent().isStopped = true; //since tag is not player stop this AI movement
}
}
// opposite from enter detection, make AI move on path again
void OnTriggerExit(Collider other)
{
if (other.tag != "Player") //the tag is not like player has left my trigger collider
{
this.GetComponent().isStopped = false; //make AI move again after trigger is over
}
}
I noticed my nav agents started this shaking a few minor versions back of Unity :-/
– Shifty