- Home /
Updating NavMeshAgent position on NavMesh
I've got a weird bug when trying to use Unity's standard NavMesh to control a physics controlled character. My agent UpdatePosition and UpdateRotation are both set to false. As you can see on the screenshot below, the character slipped from the hill and tries to get back on it to eat the cake (the characters are rolling in my game). As you can see in the red rectangle in my screenshot, the pathfinding system still thinks my character is on the hill, so it simply commands to go towards the cake, while in fact he's at the bottom of the hill.
I tried something basic (see below) to detect if I'm on the right path, but it does not work. I then tried to call agent.ResetPath() manually with Input.GetKeyDown to test the behaviour, and it does not update the agent location on the NavMesh. I call SetDestination every frame, but I tried to call it only when I change target and it doesn't change anything. Is there any way I could check if my agent is at the right spot and update it if necessary?
agent.SetDestination(food.position);
if (agent.hasPath && agent.SamplePathPosition(-1, 0.5F, out hit) && (hit.position - transform.position).sqrMagnitude > 1)
{
agent.ResetPath();
}
Answer by maxxa05 · Jun 02, 2014 at 03:31 PM
Found a workaround-ish, if I detect that my character is stuck (has a low velocity but shouldn't) for some time, I just use:
agent.Warp(transform.position);
Far from perfect, but I guess it's the best I can achieve with Unity's NavMesh.
Answer by Griffo · May 28, 2014 at 05:44 PM
Have you tried something simple like
private var agent : NavMeshAgent;
function Start(){
agent = GetComponent.<NavMeshAgent>();
}
function Update(){
agent.destination = food.position;
}
Then knock him off track and see if he computes a new path?
setting agent.destination seems to do the same than SetDestination. The problem is still there.
Your answer
Follow this Question
Related Questions
Get NavMeshAgent to look where it's going 0 Answers
How do I fix two NavMeshAgents fighting for the same position? 1 Answer
How to change a NavMeshAgent angular rotation speed, 0 Answers
How to use Unity's pathfinding system without NavMeshAgent controlling my character? 1 Answer
Navigation Mesh + Doors 0 Answers