title: Unity 5.4 "Set Destination" can only be called on an active agent, Wrong destination when instantiating
body: <p>I am trying to spawn soldiers and move them as a regiment via mouse clicks on a nav mesh. But i get the ""Set Destination" can only be called on an active agent" error. I read in the forums that this can be caused by instantiating to high or low from the nav mesh. But wherever i put the spawnpoint on the y axis, nothing changes. I usually spawn them on Y = 0 It seems Unity sets my prefab clones autmatically to y = 0.303 when instantiating... i dont't know why. I can't translante the soldiers on the y-axis on runtime in the scene view. Another "fun" thing that happens is that I get an unassigned reference exception for the nav Mesh agent even though I call getComponent on Awake. I have to call it in a separate function to make it work respectively to get to the "Set Destination" Error. </p>
  
  <pre><code>public class Move : MonoBehaviour
  {
      private Ray _ray;
      private RaycastHit hit;
      private float raycastLength = 1000.0f;
      private UnitMove nav;
  
      public static List&lt;GameObject&gt; selectedUnits = new List&lt;GameObject&gt;();
  
      void Update ()
      {
          _ray = Camera.main.ScreenPointToRay(Input.mousePosition);
          if (Input.GetMouseButtonDown(0))
          {
              if (Physics.Raycast(_ray, out hit, raycastLength))
              {
                  MoveRegiment(hit.point);
              }
          }
      }
  
      void MoveRegiment(Vector3 moveToPos)
      {
          foreach (GameObject go in selectedUnits)
          {      
              nav = go.GetComponent&lt;UnitMove&gt;();
              nav.setNav();
              nav.MovetoNav(moveToPos.x, moveToPos.y, moveToPos.z);
          } 
      }
  }
  
  public class UnitMove : MonoBehaviour
  {
      private NavMeshAgent nav;
      public int xPos { get; set; }
      public int yPos { get; set; }
  
      void Awake()
      {
        nav = GetComponent&lt;NavMeshAgent&gt;(); //does not work...
      }
  
     public void setNav()
      {
          nav = GetComponent&lt;NavMeshAgent&gt;();
      }
     public void MovetoNav(float x, float y, float z)
      {
          nav.SetDestination(new Vector3(x , y, z));
      }
  }
  public class RegimentSpwan : MonoBehaviour
  {
      public Text row;
      public Text unitAmmount;
      public GameObject Unit;
  
      private GameObject _newGO;
      private Vector3 pos;
  
      public void OnclickNewRegiment()
      {
          DestroyImmediate(GameObject.Find("Regiment"));
  
          _newGO = new GameObject("Regiment");
          Instantiate(_newGO, this.transform.position, Quaternion.identity);
  
          for (int i = 0; i &lt; Convert.ToInt16(row.text); i++)
          {
              for (int j = 0; j &lt; Convert.ToInt16(unitAmmount.text); j++)
              {
                  Debug.Log(this.transform.position.y); //is zero
                  Unit.name = "Unit_" + i + "_" + j;
                  pos = new Vector3(this.transform.position.x + j * 2,this.transform.position.y, this.transform.position.z + i * 2);
                  Instantiate(Unit, pos, Quaternion.identity, _newGO.transform);
                  Move.selectedUnits.Add(Unit); //list of gameobjects
  
              }
          }
  
      }
  }
  </code></pre>