- Home /
 
NavMeshAgent Move towardes the final point in the path directly
I have NavMeshAgent and some nodes drawn OnMouseDrag and I want to make the agent follow those nodes from the first to the final I assigned those nodes to list of gameobjects in order to be able to loop on this list to make the agent move from gameobject[0] to the final in the list* the problem is * The agent moves from the first point and when I release the mouse the destination is being set to the final point directly I want it to go through all the nodes in curved manner and this is my code
 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 
 
 public class AgentWalking : MonoBehaviour
 {
     private NavMeshAgent agent;
     private float distance;
     public GameObject node;
     private Vector3 lastMousPosition = Vector3.zero;
     public List<GameObject> drawnNodes;
     private int drawnNode;
 
     // Use this for initialization
     void Start()
     {
         agent = GetComponent<NavMeshAgent>();
         distance =4* node.GetComponent<MeshRenderer>().bounds.size.x;
         drawnNodes = new List<GameObject>();
         drawnNode = 0;
 
     }
 
     // Update is called once per frame
     void Update()
     {
 
     }
     void LateUpdate()
     {
         StartCoroutine("SetTheAgentDestination");
 
     }
     void OnMouseDrag()
     {
         StartCoroutine("DrawPoints");
     }
     private IEnumerator DrawPoints()
     {
         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hit;
 
         if (Physics.Raycast(ray, out hit))
         {
             if (hit.collider.tag == "Ground")
             {
 
 
                 if (Vector3.Distance(lastMousPosition, hit.point) > distance)
                 {
 
                     drawnNodes.Add(Instantiate(node, new Vector3(hit.point.x, .05f, hit.point.z), Quaternion.identity) as GameObject);
                     lastMousPosition = hit.point;
                 }
 
 
 
             }
 
         }
         yield return new WaitForSeconds(0);
     }
     private IEnumerator SetTheAgentDestination()
     {
         if (drawnNode < drawnNodes.Count)
         {
             agent.destination = drawnNodes[drawnNode].transform.position;
            
 
 
             drawnNode++;
 
 
     yield return new WaitForSeconds(0);
         }
     }
     private void DeleteTheDrawnNodes()
     {
         Destroy(drawnNodes[drawnNode]);
     }
 
 
 
 
 }
 
 
 
              Your answer
 
             Follow this Question
Related Questions
How to sample a point on a navMesh Agent path 0 Answers
Navmesh with destructible obstacles 1 Answer
Navmesh Agent Rotation at Destination 0 Answers
Connecting two navmeshes without "Speedboost" 0 Answers
NavMeshAgent Not Accounting for Objects 0 Answers