2017-09-29 6 views
0

Je reçois cette erreur dans l'éditeurUnity3D comment connecter NavMesh et NavMeshAgent

"SetDestination" can only be called on an active agent that has been placed on a NavMesh. Ce sont les étapes que j'ai essayé pour résoudre le problème:

  1. gauchissement NavmeshAgent à l'emplacement NavMesh
  2. déplacer manuellement le NavMeshAgent à navmesh
  3. recuire le NavMesh et faire les étapes ci-dessus
  4. Création d'un boîte avec NavMeshAgent et un nouveau NavMesh
    • Est-ce que quelqu'un a d'autres conseils que je pourrais utiliser?
+0

Afficher le script que vous utilisez pour connecter le NavMesh au NavMeshAgent – Programmer

+0

Ceci est la ligne qui donne l'erreur, rien de mal avec elle, je les mêmes millions de fois avant de code PlantAgent.SetDestination (Player.transform .position); PlantAgent est le type NavMeshAgent –

+0

également que le même code fonctionne dans un autre projet, mais sur celui-ci, je ne peux pas configurer NavMesh pour une raison quelconque –

Répondre

1

gauchissement la position Nav Mesh Les agents peuvent parfois provoquer des erreurs, surtout si elle est passée d'un navmesh à l'autre.

C'est un bug étrange, mais il semble que détecter si l'agent n'est pas sur le navmesh, puis désactiver et réactiver l'agent - va résoudre le problème (il l'a fait dans mon cas).

J'ai résolu ceci dans mon projet en faisant ce qui suit quand je déforme.

//use some existing reference to your NavMeshAgent 
NavMeshAgent agent = PlayerController.instance.GetComponent<NavMeshAgent>(); 

//This will fire when you get the error you're describing. 
if (!agent.isOnNavMesh) 
{ 
    Vector3 warpPosition; //Set to position you want to warp to 
    agent.transform.position = warpPosition; 
    agent.enabled = false; 
    agent.enabled = true; 
} 
+0

Cette chose l'a résolu !! merci, Unité devrait savoir pourquoi cela se produit dans les projets –