Esempio n. 1
0
    public override bool perform(AiController controller)
    {
        if (controller.pickUpAvailable || controller.target || controller.aiVitals.isDead)
        {
            return(false);
        }

        if (_elapsedTime == 0 && !controller.navAgent.hasPath)
        {
            //Debug.Log("Starting to wander.");

            _path = new NavMeshPath();

            NavMesh.CalculatePath(controller.navAgent.transform.position, controller.GetRandomRadialPos(wanderRadius), NavMesh.AllAreas, _path);
            //Debug.Log("Path Calculated for " + agent.name);

            controller.navAgent.SetPath(_path);
            //Debug.Log("Path Set for " + agent.name);
        }
        if (controller.navAgent.remainingDistance <= controller.navAgent.stoppingDistance)
        {
            //Debug.Log("Started waiting.");
            _elapsedTime += Time.deltaTime;

            if (_elapsedTime >= _tempWaitTime)
            {
                //Debug.Log("Finished waiting.");
                controller.navAgent.ResetPath();
                _completed = true;
            }
        }

        return(true);
    }
Esempio n. 2
0
    public void Wander(AiController controller, NavMeshAgent agent, float waitTime, float wanderRadius)
    {
        if (agent.hasPath)
        {
            return;
        }

        path = new NavMeshPath();

        elapsedTime += Time.deltaTime;
        //Debug.Log(elapsedTime);

        if (elapsedTime > waitTime)
        {
            elapsedTime -= waitTime;
            NavMesh.CalculatePath(agent.transform.position, controller.GetRandomRadialPos(wanderRadius), NavMesh.AllAreas, path);
            //Debug.Log("Path Calculated for " + agent.name);

            agent.SetPath(path);
            //Debug.Log("Path Set for " + agent.name);
        }
    }