1. Help us improve the editor usability and artist workflows. Join our discussion to provide your feedback.
    Dismiss Notice
  2. We're looking for feedback on Unity Starter Kits! Let us know what you’d like.
    Dismiss Notice
  3. We’re giving 2017.1 beta testers a chance to win t-shirts and a Nintendo Switch. Read more on the blog.
    Dismiss Notice
  4. We want to know how you learned Unity! Help us by taking this quick survey and have a chance at a $25 gift card
    Dismiss Notice
  5. Unity 5.6 is now released.
    Dismiss Notice
  6. Check out all the fixes for 5.6 on the patch releases page.
    Dismiss Notice

[SOLVED]How can I stop Navmesh agent sliding in Unity5?

Discussion in 'Navigation' started by JoeD, Jun 10, 2015.

  1. JoeD

    JoeD

    Joined:
    Mar 16, 2013
    Posts:
    2
    Hi, Im trying to make Pause function on my enemies (without changing timescale).

    Those characters are attached NavMeshAgent component, and using SetDestination() to following player.

    When the game is paused, I called function "NavMeshAgent.Stop(true)" in Unity 4.3 .

    The (true) option named "stopUpdates" means stop immediately NavMeshAgent without sliding.
    http://docs.unity3d.com/412/Documentation/ScriptReference/NavMeshAgent.Stop.html

    But this option is deleted later than Unity 5, I guess.


    Somebody said change setting acceleration value to higher, but it's dosen't work.

    http://answers.unity3d.com/questions/236828/how-can-i-stop-navmesh-agent-sliding.html

    And I tried using "NavMeshAgent.updatePosition = false".
    Then enemy character stopped, but the NavMeshAgent component was keeping moving separate from parent Object(enemy character model).

    http://forum.unity3d.com/threads/an...stopping-could-you-please-have-a-look.180623/

    So when I set "NavMeshAgent.updatePosition = true", the enemy character warp to unintentional position.

    Please tell me how to solve this issue.
    SFMPE.
     
    williammotta likes this.
  2. JoeD

    JoeD

    Joined:
    Mar 16, 2013
    Posts:
    2
    Through many trial and error, I found solution finally.

    Set velocity Vector3.zero before call Stop();.

    navMeshAgent.velocity = Vector3.zero;
    navMeshAgent.Stop();

    http://docs.unity3d.com/ScriptReference/NavMeshAgent-velocity.html

    If it will be used as reference for someone.


     
  3. fumangy

    fumangy

    Joined:
    Mar 28, 2013
    Posts:
    14
    Thanks !!!
     
  4. rickygow

    rickygow

    Joined:
    Jan 9, 2015
    Posts:
    1
    YOU MY FRIEND, ARE THE REAL MVP
    need hours to find this.
     
  5. mbue

    mbue

    Joined:
    Jan 19, 2017
    Posts:
    5
    Thank you - I also searched for that like half a day :)