Nav Mesh Agent tips over when in contact with a collider
Hi there,
I have 2 3D characters, both with a Nav Mesh Agent attached. I also want to detect when they're within range of each other so I added a Capsule Collider with Is Trigger enabled. If I simply just move the characters around using click to move via destination it all works great. They go around each other like they should. However, one of these characters is supposed to have a "charge" ability where he goes at really high speed at a target location. Without the Capsule Colliders this works great, the character goes really fast at the target location and even if that location is on top of the other character it's still fine, it pushes that character back a little bit. If I have the Capsule Colliders, the hero that performs the charge tips over rotating 90 degrees as soon as it reaches the location. I'm using Vector3.SmoothDamp to simulate this charge.
Any idea how I can prevent the falling over of the character that rushes to a location using Vector3.SmoothDamp ? Again, it only happens if at the target location the other character has a Collider. If it doesn't, then it works just fine. Is it because I'm using Vector3.SmoothDamp? If so, how else should I simulate this charge effect?
Thanks!
In the Scene view, it looks like it's not the Nav $$anonymous$$esh Agent that tips over but the collider that I add (box or capsule) if that helps at all. I also tried adding a rigid body and constrain all rotations but still nothing.
Answer by stefanplc · Nov 29, 2016 at 01:26 PM
After a while I figured out the issue which is something that didn't even cross my mind. When you create a collider and set it as trigger, it's not treated like that by the camera and raycasting. So when I was trying to charge on top of another character, my character was actually trying to climb that trigger and hence rotating 90 degrees and looking like it fell over. So the solution is to just create an empty game object, make it a child of the character game object, add the collider and trigger there and then set the layer to Ignore Raycasting for that game object.
Your answer
Follow this Question
Related Questions
Navmeshagent treats triggers like colliders 1 Answer
Cart objects clips with rigidbody objects 0 Answers
NavMeshAgent and collision 1 Answer