/// <summary>
    /// Try to create an agent on the NavMesh.
    /// </summary>
    public void Create()
    {
        //If the agent and the NavMesh have different agent IDs, don't assign it.
        if (agentType != agentTypeNavMeshID)
        {
            UnityEngine.Debug.LogWarning("The agent ID differs from the NavMesh");
            return;
        }
        //Instantiate the prefab and try to place it on the NavMesh.
        enemies.Add(Instantiate(enemyPrefab, centerNavMesh, Quaternion.identity));
        List <GameObject> notActivated = new List <GameObject>();

        //For each enemy created, move it on the NavMesh.
        foreach (GameObject o in enemies)
        {
            NavMeshAgentController a = o.GetComponent <NavMeshAgentController>();
            if (a.Move())
            {
                a.GetComponent <RandomWalk>().Activate();
                noNavMeshCount = 0;
            }
            else
            {
                notActivated.Add(a.gameObject);
                noNavMeshCount++;
            }
        }

        //Destroy any objects that were not properly added to the NavMesh.
        foreach (GameObject o in notActivated)
        {
            Destroy(o);
            enemies.Remove(o);
        }
    }
Пример #2
0
    /// <summary>
    /// Try to create an agent on the navMesh
    /// </summary>
    public void Create()
    {
        //If the agent and the navMesh have two area type different
        if (agentType != agentTypeNavMeshID)
        {
            Debug.LogWarning("The agent ID differs from the NavMesh");
            return;
        }
        //Create a gameobject to try to set it on the NavMesh
        enemies.Add(Instantiate(enemyPrefab, centerNavMesh, Quaternion.identity));
        List <GameObject> notActivated = new List <GameObject>();

        //For each enemy created move it on the navMesh
        foreach (GameObject o in enemies)
        {
            NavMeshAgentController a = o.GetComponent <NavMeshAgentController>();
            if (a.Move())
            {
                a.GetComponent <RandomWalk>().Activate();
                noNavMeshCount = 0;
            }
            else
            {
                notActivated.Add(a.gameObject);
                noNavMeshCount++;
            }
        }

        //Destroy the objects missing the NavMesh
        foreach (GameObject o in notActivated)
        {
            Destroy(o);
            enemies.Remove(o);
        }
    }