Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
1
Question by thancock · Feb 16, 2015 at 10:33 AM · c#navmeshagentagent

NavMeshAgent Teleporting when SetDestination called

I am having an issue with my NavMeshAgent teleporting when a new "SetDestination function is called". I am attempting to have my agent walk to a random point within the nav mesh. I am observing the agent teleporting to it's destination instead of translating there at the set speed.

I am using Unity 5.0 beta 18 release but I haven't seen any reported bugs or answers about that being the issue.

Here is the script I am using to set a new random destination

 using UnityEngine;
 using System.Collections;
 
 public class PetPathing : MonoBehaviour {
 
     private NavMeshAgent agent;
     private Transform targetPoint;
     private Transform destination;
 
     private float timer;
 
     // Use this for initialization
     void Start () {
         agent = gameObject.GetComponent<NavMeshAgent>();
         destination = gameObject.transform;
         targetPoint = setNewDestination();
         agent.SetDestination(targetPoint.position);
         timer = 0f;
         Debug.Log(string.Format("New destination has been set at {0}", targetPoint.position));
     }
     
     // Update is called once per frame
     void Update () {
         timer += Time.deltaTime;
         Pathing();
         Debug.Log(agent.updatePosition);
     }
 
 
     private void Pathing()
     {
         if (timer > 5.0f)
         {
             targetPoint = setNewDestination();
             agent.destination = targetPoint.position;
             timer = 0f;
             Debug.Log(string.Format("New destination has been set at {0}", targetPoint.position));
         }
     }
 
     private Transform setNewDestination()
     {
         destination.position = new Vector3(Random.Range(-6f, 6f), 0, Random.Range(-6f, 6f));
 
         return destination;
     }
 }


I have tried re-baking the navmesh as well as setting the agent's speed and acceleration to very low values.

Any help with this would be extremely appreciated.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by ashleyjlive · Feb 16, 2015 at 11:01 AM

After some time, I managed to narrow the issue down to the fact that destination is a Transform, not a Vector3. I edited your code to make it do what I believe you want it to do :) If this doesn't work, please let me know.

Be sure to revert your NavMeshAgent speeds and stuff in the editor.

using UnityEngine; using System.Collections;

public class PetPathing: MonoBehaviour {

 NavMeshAgent agent;

 Vector3 targetPoint;

 void Awake ()
 {
     agent = GetComponent<NavMeshAgent>();
     setNewDestination();
     agent.SetDestination(targetPoint);

     StartCoroutine(Pathing());
 }

 IEnumerator Pathing ()
 {
     agent.SetDestination(targetPoint);
     setNewDestination();

     yield return new WaitForSeconds(5f);

     StartCoroutine(Pathing());
 }

 void setNewDestination ()
 {
     targetPoint = new Vector3(Random.Range(-6f, 6f), 0, Random.Range(-6f, 6f));
 }

}

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image thancock · Feb 16, 2015 at 04:34 PM 0
Share

Awesome thanks for your help! This did it!

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

How to queue NavMeshAgents on entering a tile in Unity (based on path distance to tile)? 0 Answers

How to prevent NavMeshAgents from colliding when warped to same position? 0 Answers

Agent Set Destination ZigZag 1 Answer

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges